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使用稀疏矩阵节省内存实例
Jun 27 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
python做反被爬保护的方法
Jul 01 Python
python处理大日志文件
Jul 23 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
python退出循环的方法
Jun 18 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python 忽略文件名编码的方法
Aug 01 Python
python高温预警数据获取实例
Jul 23 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
在字符串中把网址改成超级链接
2006/10/09 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP里的单例类写法实例
2015/06/25 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
关于Django外键赋值问题详解
2017/08/13 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python  Django 母版和继承解析
2019/08/09 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
法学毕业生自荐信
2013/11/13 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python