由于django是一个动态的网站,所有每次请求均去数据库进行相关的操作,当网站的访问量大的时候,耗时就会很明显,因此django中利用缓存来解决耗时的问题,所谓缓存就是将某个方法的response暂时保存在内存或者是memcache中,一段时间再来访问,直接取出缓存中的response,就不再执行view中的方法。
a,在settings.py中配置:
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘, # 指定缓存使用的引擎 ‘LOCATION‘: ‘D:\lqz\cache‘, # 指定缓存的路径 ‘TIMEOUT‘: 300, # 缓存超时时间(默认为300秒,None表示永不过期) ‘OPTIONS‘: { ‘MAX_ENTRIES‘: 300, # 最大缓存记录的数量(默认300) ‘CULL_FREQUENCY‘: 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) } } }
ps:filebased.FileBasedCache 是将response以文件的形式缓存,使用不同的引擎,django的缓存方式不同。
b,
1:单页面缓存:在视图函数中加上一个装饰器:
from django.views.decorators.cache import cache_page @cache_page(5) # 5 代表缓存时间
2:局部视图使用:
a. 引入TemplateTag
{% load cache %}
b. 使用缓存
{% cache 5000 缓存key %}
缓存内容
{% endcache %}
3:全局使用:
1 使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存。
MIDDLEWARE = [ ‘django.middleware.cache.UpdateCacheMiddleware‘, # process_response ‘django.middleware.security.SecurityMiddleware‘, ‘django.contrib.sessions.middleware.SessionMiddleware‘, ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.csrf.CsrfViewMiddleware‘, ‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘, ‘django.middleware.cache.FetchFromCacheMiddleware‘ # process_request ]
原文:https://www.cnblogs.com/ay742936292/p/11151161.html