浅谈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字符串和文件操作常用函数分析
Apr 08 Python
Python函数式编程
Jul 20 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
Python实现简单查找最长子串功能示例
Feb 26 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
如何基于python实现脚本加密
Dec 28 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
python 进阶学习之python装饰器小结
Sep 04 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php进程间通讯实例分析
2016/07/11 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
详解js类型判断
2018/05/22 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
老师推荐信
2013/10/28 职场文书
考博专家推荐信模板
2013/12/02 职场文书
致全体运动员广播稿
2014/02/01 职场文书
预备党员公开承诺书
2014/05/28 职场文书
老人节标语大全
2014/10/08 职场文书
后勤个人工作总结
2015/02/28 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
八年级作文之友谊
2019/12/02 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang