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 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
python读取目录下最新的文件夹方法
Dec 24 Python
实例介绍Python中整型
Feb 11 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
重写django的model下的objects模型管理器方式
May 15 Python
如何使用Cython对python代码进行加密
Jul 08 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python上下文管理器和with块详解
2017/09/09 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python WSGI的深入理解
2018/08/01 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
python支持多线程的爬虫实例
2019/12/21 Python
python enumerate内置函数用法总结
2020/01/07 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
产品包装策划方案
2014/05/18 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
财务负责人岗位职责
2015/02/03 职场文书
同意报考证明
2015/06/17 职场文书
九年级数学教学反思
2016/02/17 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python