English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
비싼 계산 결과를 캐시에 저장하려면, 다음 번 사용할 때 다시 실행하지 않아도 됩니다. 캐시가 어떻게 작동하는지 설명하는 가상 코드입니다−
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 주어진 URL을 사용하여 캐시에서 해당 페이지를 찾으려고 시도합니다 캐시에 페이지가 있는 경우: 캐시된 페이지를 반환합니다 else: 페이지를 생성합니다 생성된 페이지를 캐시에 저장합니다(다음 번 사용을 위해) 생성된 페이지를 반환합니다
Django는 자신의 캐시 시스템을 제공하여 동적 웹 페이지를 저장하고, 필요할 때마다 다시 계산하지 않도록 합니다. Django 캐시 아키텍처의 장점은, 캐시를缓存하도록 합니다 -
특정 뷰의 출력 템플릿의 일부 전체 웹사이트
Django에서 캐시를 사용하려면, 먼저 캐시가 저장될 위치를 설정해야 합니다. 캐시 프레임워크는 다양한 가능성을 제공합니다. - 캐시는 파일 시스템, 또는 직접 메모리에 저장될 수 있습니다. 이를 위해 프로젝트 settings.py 파일에서 설정을 완료하면 됩니다.
프로젝트 settings.py 파일에 다음과 같이 추가하면 됩니다.-
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_table_name', } }
이 작업을 완료하고 설정을 완료하기 위해, 'my_table_name'라는 캐시 테이블을 생성해야 합니다. 이를 위해 다음과 같은 절차를 따르면 됩니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 python manage.py createcachetable
파일 시스템 캐시 설정
프로젝트 settings.py 파일에 다음과 같이 추가하면 됩니다.-
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', } }
메모리에 캐시 설정
이는 캐시의 가장 효과적인 방법으로, Python 바인딩 라이브러리가 다음과 같은 옵션 중 하나의 메모리 고속 캐시를 선택한 경우 사용할 수 있습니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211, } }
또는
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } }
전체 웹사이트 캐시
Django에서 빠른 캐시를 사용하는 가장 간단한 방법은 전체 웹사이트를 캐시로 저장하는 것입니다. 이를 위해 프로젝트 settings.py의 MIDDLEWARE_CLASSES 옵션을 편집하면 됩니다. 다음은 옵션에 추가해야 할 것입니다.-
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 MIDDLEWARE_CLASSES += ( 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', )
이곳의 순서는 매우 중요합니다. 업데이트는 미들웨어를 가져오기 전에 수행되어야 합니다.
그런 다음, 같은 파일에서 설정이 필요합니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 CACHE_MIDDLEWARE_ALIAS – The cache alias to use for storage. CACHE_MIDDLEWARE_SECONDS – Each page should be cached for the number of seconds.
뷰 캐시
전체 웹사이트를 캐시하지 않고도 특정 뷰를 캐시할 수 있습니다. 이는 Django의 cache_page 데코레이터를 사용하여 완료할 수 있습니다. viewArticles 뷰의 결과를 캐시하려고 합니다.-
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from django.views.decorators.cache import cache_page @cache_page(60 * 15) def viewArticles(request, year, month): text = "Displaying articles of: %s"/%s"%(year, month) return HttpResponse(text)
cache_page는 결과가 캐시되기를 원하는 초(파라미터)입니다. 이 예제에서는 결과가 캐시됩니다. 15 분.
주의사항 - 이전에 본 것처럼, 이 뷰는 매핑되었습니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 urlpatterns = patterns('myapp.views', url(r'^articles/(?P<month>\d{2)/(?P<year>\d{4)/', 'viewArticles', name = 'articles'),)
URL이 매개변수를 사용하기 때문에, 각 다른 호출은 각각 독립적으로 캐시가 실행됩니다. 예를 들어, 요청 /myapp/articles/02/2007 각각 캐시에 저장됩니다. /myapp/articles/03/2008.
뷰를 캐시할 수도 있으며, 이는 url.py 파일에서 직접 완료할 수 있습니다. 아래에는 동일한 결과가 있습니다. myapp를 편집만 하면 됩니다./url.py 파일을 변경하고 (위의) 관련 매핑 URL을 변경합니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 urlpatterns = patterns('myapp.views', url(r'^articles/(?P<month>\d{2)/(?P<year>\d{4)/, cache_page(60 * 15)('viewArticles'), name = 'articles'),)
물론, 이는 더 이상 myapp가 필요하지 않습니다./views.py.
템플릿 프레임워크를 캐시
템플릿의 일부를 캐시할 수도 있으며, 이는 'cache' 태그를 사용하여 이루어집니다. 'hello.html' 템플릿을 수정해 보겠습니다. -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 {% extends "main_template.html" %} {% block title %}My Hello Page{% endblock %} {% block content %} Hello World!!!<p>Today is {{today}}</p> We are {% if today.day == 1 %} 월의 첫 번째 날. {% elif today == 30 %} 월의 마지막 날. {% else %} I don't know. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %} {% endblock %}
캐시 내용 블록 템플릿이 될 것입니다}} -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 {% load cache %} {% extends "main_template.html" %} {% block title %}My Hello Page{% endblock %} {% cache 500 content %} {% block content %} Hello World!!!<p>Today is {{today}}</p> We are {% if today.day == 1 %} 월의 첫 번째 날. {% elif today == 30 %} 월의 마지막 날. {% else %} I don't know. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %} {% endblock %} {% endcache %}
위에서 보면缓存 태그가 필요합니다2파라미터 -缓存片段提供的块被缓存的秒数以及名称。