浅谈django三种缓存模式的使用及注意点


Posted in Python onSeptember 30, 2018

django是动态网页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染,将字符串返回给用户,用户会看到相应的html页面。但是如果每次请求都从数据库中请求并获取数据,并且当用户并发量十分大的时候,这将服务器性能将大大受到影响。因此使用缓存能有效的解决这类问题。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。

缓存的适合场景

对页面实时性要求不高的页面。对于大多数的购物网站,短期内商品的描述是没有变化的,可以使用缓存。

缓存优先级

由django的生命周期知各级缓存的优先级:中间件应用的全局缓存>视图函数缓存>模板渲染下的局部视图使用缓存。

Django 缓存模式的使用(主要针对RestFul设计模式的项目)

有三种模式:

全站使用缓存模式(整个项目每个接口都会使用缓存,缺点:所以接口都无法实时性获取数据) 单独视图缓存模式(单个接口使用缓存) 局部视图缓存模式

第一种:实现方式:

必须在 settings中设置 缓存中间件

MIDDLEWARE = [
 'django.middleware.cache.UpdateCacheMiddleware',
  。。。其他中间件。。。
 'django.middleware.cache.FetchFromCacheMiddleware',
]

但是伴随的缺点就是 没有设置 缓存的接口默认都会有600秒的缓存,如下

浅谈django三种缓存模式的使用及注意点

无论清缓存还是换浏览器,因为缓存都是放在服务端的。

这就导致 那些不需要设置缓存,要求数据实时性较高的接口无法及时返回最新数据。

所以:

如果需要使用

from django.views.decorators.cache import cache_page, cache_control
from django.views.decorators.vary import vary_on_headers

@cache_control,@vary_on_headers,@vary_on_cookie

这些装饰器,就必须需要 缓存中间件,但是这样会导致其他接口都会有缓存600秒,需要慎重考虑使用

第二种:

from django.views.decorators.cache import cache_page
@cache_page(10)

def cac(request):

 .......

这种方式只针对一个接口使用缓存(个人倾向于使用此方式)

第三种:

涉及到模板的使用(具体没有研究过):

浅谈django三种缓存模式的使用及注意点

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
深入理解Django的中间件middleware
Mar 14 Python
python3如何将docx转换成pdf文件
Mar 23 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python中的xlrd模块使用原理解析
May 21 Python
Django如何创作一个简单的最小程序
May 12 Python
使用Python实现租车计费系统的两种方法
Sep 29 #Python
Python实现App自动签到领取积分功能
Sep 29 #Python
10个Python小技巧你值得拥有
Sep 29 #Python
实例分析python3实现并发访问水平切分表
Sep 29 #Python
3个用于数据科学的顶级Python库
Sep 29 #Python
使用Python机器学习降低静态日志噪声
Sep 29 #Python
python实现字符串和字典的转换
Sep 29 #Python
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
Yii框架form表单用法实例
2014/12/04 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python分布式环境下的限流器的示例
2017/10/26 Python
如何在python中使用selenium的示例
2017/12/26 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Django实现网页分页功能
2019/10/31 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
PHP高级工程师面试问题推荐
2013/01/18 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
别名指示符是什么
2012/10/08 面试题
演讲比赛获奖感言
2014/02/02 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
放弃继承权公证书
2015/01/23 职场文书
施工安全员岗位职责
2015/04/11 职场文书
党支部季度考核意见
2015/06/02 职场文书
学校证明范文
2015/06/24 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书