Django中的CACHE_BACKEND参数和站点级Cache设置


Posted in Python onJuly 23, 2015

CACHE_BACKEND参数

每个缓存后端都可能使用参数。 它们在CACHE_BACKEND设置中以查询字符串形式给出。 有效参数如下:

  •     timeout:用于缓存的过期时间,以秒为单位。 这个参数默认被设置为300秒(五分钟)。
  •     max_entries:对于内存,文件系统和数据库后端,高速缓存允许的最大条目数,超出这个数则旧值将被删除。 这个参数默认是300。
  •     cull_percentage :当达到 max_entries 的时候,被删除的条目比率。 实际的比率是 1/cull_percentage ,所以设置cull_frequency=2就是在达到 max_entries 的时候去除一半数量的缓存。

    把 cull_frequency 的值设置为 0 意味着当达到 max_entries 时,缓存将被清空。 这将以很多缓存丢失为代价,大大提高接受访问的速度。

在这个例子中, timeout 被设成 60

CACHE_BACKEND = "memcached://127.0.0.1:11211/?timeout=60"

而在这个例子中, timeout 设为 30 而 max_entries 为 400 :

CACHE_BACKEND = "locmem:///?timeout=30&max_entries=400"

其中,非法的参数与非法的参数值都将被忽略。
站点级 Cache

一旦高速缓存设置,最简单的方法是使用缓存缓存整个网站。 您 需要添加'django.middleware.cache.UpdateCacheMiddleware'和 ‘django.middleware.cache.FetchFromCacheMiddleware'到您的MIDDLEWARE_CLASSES设置中,在这个例子中是:

MIDDLEWARE_CLASSES = (
 'django.middleware.cache.UpdateCacheMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
)

注意:

不,这里并没有排版错误: 修改的中间件,必须放在列表的开始位置,而fectch中间件,必须放在最后。 细节有点费解,如果您想了解完整内幕请参看下面的MIDDLEWARE_CLASSES顺序。

然后,在你的Django settings文件里加入下面所需的设置:

  •     CACHE_MIDDLEWARE_SECONDS :每个页面应该被缓存的秒数。
  •     CACHE_MIDDLEWARE_KEY_PREFIX :如果缓存被多个使用相同Django安装的网站所共享,那么把这个值设成当前网站名,或其他能代表这个Django实例的唯一字符串,以避免key发生冲突。 如果你不在意的话可以设成空字符串。

缓存中间件缓存每个没有GET或者POST参数的页面。 或者,如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY设置为True,只有匿名请求(即不是由登录的用户)将被缓存。 如果想取消用户相关页面(user-specific pages)的缓存,例如Djangos 的管理界面,这是一种既简单又有效的方法。 CACHE_MIDDLEWARE_ANONYMOUS_ONLY,你应该确保你已经启动AuthenticationMiddleware。

此外,缓存中间件为每个HttpResponse自动设置了几个头部信息:

  •     当一个新(没缓存的)版本的页面被请求时设置Last-Modified头部为当前日期/时间。
  •     设置Expires头部为当前日期/时间加上定义的CACHE_MIDDLEWARE_SECONDS。
  •     设置Cache-Control头部来给页面一个最长的有效期,值来自于CACHE_MIDDLEWARE_SECONDS设置。

如果视图设置自己的缓存到期时间(即 它有一个最大年龄在头部信息的Cache-Control中),那么页面将缓存直到过期,而不是CACHE_MIDDLEWARE_SECONDS。使用django.views.decorators.cache装饰器,您可以轻松地设置视图的到期时间(使用cache_control装饰器)或禁用缓存视图(使用never_cache装饰器)。

Python 相关文章推荐
Python脚本实现Web漏洞扫描工具
Oct 25 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
python如何使用unittest测试接口
Apr 04 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Python unittest基本使用方法代码实例
Jun 29 Python
5款实用的python 工具推荐
Oct 13 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
简介Django框架中可使用的各类缓存
Jul 23 #Python
浅析Python的Django框架中的Memcached
Jul 23 #Python
详解Django中的权限和组以及消息
Jul 23 #Python
在Django的模板中使用认证数据的方法
Jul 23 #Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 #Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 #Python
在Django中限制已登录用户的访问的方法
Jul 23 #Python
You might like
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
php输出xml属性的方法
2015/03/19 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
jquery 插件学习(四)
2012/08/06 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
python使用pil生成缩略图的方法
2015/03/26 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
python得到单词模式的示例
2018/10/15 Python
详解Python字典的操作
2019/03/04 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
高中毕业生自我鉴定
2013/11/03 职场文书
生物科学专业个人求职信范文
2013/12/05 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
2014年医务科工作总结
2014/12/18 职场文书
项目负责人岗位职责
2015/02/15 职场文书
法律讲堂观后感
2015/06/11 职场文书