浅谈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中的exec、eval使用实例
Sep 23 Python
python实现从web抓取文档的方法
Sep 26 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
python字符串Intern机制详解
Jul 01 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
tensorflow+k-means聚类简单实现猫狗图像分类的方法
Apr 28 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 xml实例 留言本
2009/03/20 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
JS作用域深度解析
2016/12/29 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python实现用户管理系统
2018/01/10 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
如何提高python 中for循环的效率
2020/04/15 Python
python代码能做成软件吗
2020/07/24 Python
Python图像读写方法对比
2020/11/16 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
创业者是否需要商业计划书?
2014/02/07 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
民用住房租房协议书
2014/10/29 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL