django-缓存的三种应用
Posted 蔚蓝的蓝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-缓存的三种应用相关的知识,希望对你有一定的参考价值。
缓存优先级
由django的生命周期知各级缓存的优先级:中间件应用的全局缓存>视图函数缓存>模板渲染下的局部视图使用缓存。
局部视图 使用
在模板的顶端附近加入{% load cache %}以通知模板存取缓存标签。
模板标签{% cache %}在给定的时间内缓存了块的内容。 它至少需要两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。
{#局部缓存 静态数据缓存#} {% load cache %} {#引入TemplateTage#} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>cache</title> </head> <body> {# 小力度细致缓存#} {% cache 5 c1 %} {#两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。 #} .. sidebar .. {% endcache %} </body> </html>
单独视图缓存 使用
#views.py from django.views.decorators.cache import cache_page @cache_page(10) #参数为缓存失效时间 def cache(request): pass
全局缓存 配置
#settings.py MIDDLEWARE = [ ‘django.middleware.cache.UpdateMiddleware‘, ‘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.FrameOptionsMiddleware‘, ]
‘django.middleware.cache.UpdateMiddleware‘,
服务端响应response时作用 查看是否有缓存,如果没有则写入缓存,否则直接返回给客户端
‘django.middleware.cache.FetchFormCacheMiddleware‘,
客户端请求request时作用 查看是否有缓存,如果有不经过views直接返回,否则进入views视图执行函数获取缓存
客户端第一次发出请求是通常是没有缓存的,
因此request请求由中间件FetchForm经过检查没有缓存后进入views
然后response携带缓存到中间件Update后写入缓存,再返回给客户端
以上是关于django-缓存的三种应用的主要内容,如果未能解决你的问题,请参考以下文章