一、缓存配置,详见: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、应用场景:将复杂查询的结果存于缓存,后续再需要时,先去缓存中查找,有则直接取出,没有再另行查找并重新存入缓存。

 

posted on 2020-05-21 18:01  焚音留香  阅读(204)  评论(0编辑  收藏  举报