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编程实现语音控制电脑
Apr 01 Python
linux 下实现python多版本安装实践
Nov 18 Python
Python求算数平方根和约数的方法汇总
Mar 09 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python实现通讯录功能
Feb 22 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
python标记语句块使用方法总结
Aug 05 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Python如何读取文件中图片格式
Jan 13 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
python基于opencv实现人脸识别
Jan 04 Python
Python anaconda安装库命令详解
Oct 16 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危险函数(disable_functions)
2012/02/23 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php从字符串创建函数的方法
2015/03/16 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
params有什么用
2016/03/01 面试题
优秀的自荐信要注意哪些
2014/01/03 职场文书
和平主题的演讲稿
2014/01/12 职场文书
寄语学生的话
2014/04/10 职场文书
大学生实习推荐信
2015/03/27 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android
python Django框架快速入门教程(后台管理)
2021/07/21 Python