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后写入缓存,再返回给客户端

猜你喜欢

转载自www.cnblogs.com/welan/p/9010966.html