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中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
Python上下文管理器和with块详解
Sep 09 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
python中如何进行连乘计算
May 28 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 生成签名及验证签名详解
2016/10/26 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
浅谈node的事件机制
2017/10/09 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
Python是怎样处理json模块的
2020/07/16 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
感恩节活动方案
2014/01/27 职场文书
成人继续教育实施方案
2014/03/01 职场文书
建设工程授权委托书
2014/09/22 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
辞职离别感言
2015/08/04 职场文书
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python