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 str与repr的区别
Mar 23 Python
python单例模式实例分析
Apr 08 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
python实现xlsx文件分析详解
Jan 02 Python
Python 多维List创建的问题小结
Jan 18 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
python列表,字典,元组简单用法示例
Jul 11 Python
详解python播放音频的三种方法
Sep 23 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
M1芯片安装python3.9.1的实现
Feb 02 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构造函数实例讲解
2013/11/13 PHP
php实现分页显示
2015/11/03 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
原生js轮播特效
2017/05/18 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
跟老齐学Python之重回函数
2014/10/10 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python随机生成数模块random使用实例
2015/04/13 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python计算auc指标实例
2017/07/13 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
python实现人脸签到系统
2020/04/13 Python
墨西哥网上超市:Superama
2018/07/10 全球购物
C#中的验证控件有几种
2014/03/08 面试题
公司请假条格式
2014/04/11 职场文书
医疗纠纷协议书
2014/04/16 职场文书
预备党员转正考核材料
2014/06/03 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
python lambda 表达式形式分析
2022/04/03 Python