一、缓存配置,详见:https://www.cnblogs.com/liuqingzheng/articles/9803351.html。
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定缓存使用的引擎 'LOCATION': 'D:\aaa\bbb\', # 指定缓存的路径,还可以是别的位置,此处以文件为例 'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期) 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,此处即1/3(默认3) } } }
二、前后端混合开发的情况,不同缓存粒度的配置情况
1、全局缓存,setting.py中:
MIDDLEWARE = [ # 返回之前,判断缓存否已经存在,若不存在,则通过UpdateCacheMiddleware将缓存保存设置的位置 'django.middleware.cache.UpdateCacheMiddleware', ... # 请求经过一系列的中间件认证,如果请求的内容已在缓存中,则通过FetchFromCacheMiddleware获取内容并返回给用户 'django.middleware.cache.FetchFromCacheMiddleware', ] CACHE_MIDDLEWARE_SECONDS = 10 # 设置缓存时间
2、单页面缓存,视图方法上加装饰器:
# django.views.decorators.cache.cache_page @cache_page(5) # 缓存5秒 def test_cache(request): # python内置time模块 ctime = time.time() return render(request, 'index.html', context={'ctime': ctime})
3、页面局部缓存:
{% load cache %}
{% cache 5 'name' %} # 5表示5秒,name是唯一key值
{{ ctime }}
{% endcache %}
三、前后端分离开发的情况
1、代码:
# django.core.cache.cache cache.set('key', value可以是任意数据类型) # 通过<key>存取指定缓存数据 # -------------------------------------------- cache.get('key')
2、应用场景:将复杂查询的结果存于缓存,后续再需要时,先去缓存中查找,有则直接取出,没有再另行查找并重新存入缓存。