浅谈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 version 2.7 required, which was not found in the registry
Aug 26 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
Python对多属性的重复数据去重实例
Apr 18 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
python抓取多种类型的页面方法实例
Nov 20 Python
Python-opencv 双线性插值实例
Jan 17 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
python中PyQuery库用法分享
Jan 15 Python
python基于tkinter实现gif录屏功能
May 19 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
php去除HTML标签实例
2013/11/06 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
Python定时器实例代码
2017/11/01 Python
Python多进程编程常用方法解析
2020/03/26 Python
python之语音识别speech模块
2020/09/09 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
总经理司机职责
2014/02/02 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
创业计划书之家教中心
2019/09/25 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript