浅谈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实现的重启关机程序实例
Aug 21 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
python tkinter控件布局项目实例
Nov 04 Python
Python StringIO如何在内存中读写str
Jan 07 Python
python opencv如何实现图片绘制
Jan 19 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Django使用Profile扩展User模块方式
May 14 Python
Python实现封装打包自己写的代码,被python import
Jul 12 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php的curl实现get和post的代码
2008/08/23 PHP
php中的动态调用实例分析
2015/01/07 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
PHP pear安装配置教程
2016/05/14 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
公司培训心得体会
2014/01/03 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
红与黑读书笔记
2015/06/29 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis