浅谈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 18 Python
讲解Python中运算符使用时的优先级
May 14 Python
python 队列详解及实例代码
Oct 18 Python
python的Tqdm模块的使用
Jan 10 Python
Python登录注册验证功能实现
Jun 18 Python
python之django母板页面的使用
Jul 03 Python
Python实现八皇后问题示例代码
Dec 09 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
关于Python作用域自学总结
Jun 10 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python合并多个excel文件的示例
Sep 23 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备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
Vue实现手机计算器
2020/08/17 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
Python callable()函数用法实例分析
2018/03/17 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
python实现名片管理器的示例代码
2019/12/17 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
新闻编辑专业自荐信
2014/07/02 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
二审答辩状范文
2015/05/22 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
个人工作决心书
2015/09/22 职场文书
提档介绍信范文
2015/10/22 职场文书
解除租赁合同协议书
2016/03/21 职场文书
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS