浅谈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中你应该知道的一些内置函数
Mar 31 Python
python 生成器协程运算实例
Sep 04 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
python设置中文界面实例方法
Oct 27 Python
python实现会员管理系统
Mar 18 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的开合式多级菜单程序
2006/10/09 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
webpack打包js的方法
2018/03/12 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
pandas中去除指定字符的实例
2018/05/18 Python
详解python的argpare和click模块小结
2019/03/31 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
详解python logging日志传输
2020/07/01 Python
python中字典增加和删除使用方法
2020/09/30 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
教师民族团结演讲稿
2014/08/27 职场文书
地震捐款倡议书
2014/08/29 职场文书
捐助感谢信
2015/01/22 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL