目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5930.7k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(1k)
赞(0)

Django缓存-全站缓存

image-20221113192136142

官网:https://docs.djangoproject.com/zh-hans/4.1/topics/cache/#the-per-site-cache

一旦缓存设置完毕,使用缓存最简便的方式就是缓存整个站点。你需要在 MIDDLEWARE设置中添加 'django.middleware.cache.UpdateCacheMiddleware''django.middleware.cache.FetchFromCacheMiddleware' ,像下面这个例子一样:

FetchFromCacheMiddleware :从缓存中读取数据

  • 缓存状态为200的GET和HEAD请求的响应(除非响应头中设置不进行缓存)
  • 对具有不同查询参数的相同URL的请求的响应被认为是各自不同的页面,并且被分别单独缓存。
  • 该中间件会使用与对应的GET请求相同的响应头来回答HEAD请求,即可以为HEAD请求返回缓存的GET响应。

UpdateCacheMiddleware :将数据更新到缓存中

  • 该中间件会自动在每个响应中设置几个headers:

    • 设置Expires为当前日期/时间 加上 定义的CACHE_MIDDLEWARE_SECONDS值,GMT时间
    • 设置响应的Cache-Control的max-age,值是定义的CACHE_MIDDLEWARE_SECONDS值。
  • 如果视图设置了自己的缓存时间(即设置了Cache-Control 的max age),那么页面将被缓存直到到期时间,而不是CACHE_MIDDLEWARE_SECONDS。

    使用装饰器 django.views.decorators.cache可以设置视图的到期时间(使用cache_control()装饰器,代码:@cache_control(max_age=3600))或禁用视图的缓存(使用never_cache()装饰器,代码:@never_cache)

  • 如果USE_I18N设置为True,则生成的缓存key将包含当前语言的名称,这样可以轻松缓存多语言网站,而无需自己创建缓存密钥。

  • 如果 USE_L10N设置为True 并且 USE_TZ被设置为True,缓存key也会包括当前语言

注意

UpdateCacheMiddleware中间件必须在列表的第一位

FetchFromCacheMiddleware 中间件必须在最后

最后,在 Django 设置文件里添加下面的必需配置:

  • CACHE_MIDDLEWARE_ALIAS -- 用于存储的缓存别名
  • CACHE_MIDDLEWARE_SECONDS -- 应缓存每个页面的秒数
  • CACHE_MIDDLEWARE_KEY_PREFIX-- 如果使用相同的 Django installation ,通过多站点进行缓存共享,请将此值设置为站点名,或者设置成在Django 实例中唯一的其他字符串,以此防止键冲突。如果你不介意,可以设置成空字符串

备注

使用缓存因为要和redis交互,所以需要安装redis

pip install redis==4.3.4

实时效果反馈

1. 关于Django全站缓存设置,说法错误的是?

A Django全站缓存需要使用中间件实现

B UpdateCacheMiddleware中间件用来更新缓存数据

C FetchFromCacheMiddleware 中间件用来获取缓存数据

D 缓存中间件无先后顺序

答案

1=>D

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2