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实现下载整个ftp目录的方法
Jan 17 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Django框架模板介绍
Jan 15 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python如何计算语句执行时间
Nov 22 Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 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&&mysql)三
2006/10/09 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP链表操作简单示例
2016/10/15 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
Python Property属性的2种用法
2015/06/21 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
python代码xml转txt实例
2020/03/10 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
物流毕业生个人的自我评价
2014/02/13 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年工程师工作总结
2014/11/25 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
感恩教师节主题班会
2015/08/12 职场文书
运动会100米广播稿
2015/08/19 职场文书
《去年的树》教学反思
2016/02/18 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
golang 在windows中设置环境变量的操作
2021/04/29 Golang
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android