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 解析html之BeautifulSoup
Jul 07 Python
python模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
python快速查找算法应用实例
Sep 26 Python
python字典操作实例详解
Nov 16 Python
python selenium firefox使用详解
Feb 26 Python
python实现弹窗祝福效果
Apr 07 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
Python中函数的返回值示例浅析
Aug 28 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
Python调用Redis的示例代码
Nov 24 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 Global定义全局变量使用说明
2013/08/15 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
PHP中的类型约束介绍
2015/05/11 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
python基于http下载视频或音频
2018/06/20 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
python中doctest库实例用法
2020/12/31 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
自我鉴定 电子商务专业
2014/01/30 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
如何写辞职信
2015/05/13 职场文书
标枪加油稿
2015/07/22 职场文书
什么是SOLID
2022/03/24 Javascript
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js