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操作xml文件示例
Apr 07 Python
编写Python的web框架中的Model的教程
Apr 29 Python
python通过定义一个类实例作为ftp回调方法
May 04 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
对Python中数组的几种使用方法总结
Jun 28 Python
Tesserocr库的正确安装方式
Oct 19 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
Python装饰器用法与知识点小结
Mar 09 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
Golang Web 框架Iris安装部署
Aug 14 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
封装好的省市地区联动控件附下载
2007/08/13 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
巴西网上药房:onofre
2016/11/21 全球购物
百度吧主申请感言
2014/01/12 职场文书
现金出纳岗位职责
2014/03/15 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书