浅谈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 相关文章推荐
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python模块WSGI使用详解
Feb 02 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
使用python实现飞机大战游戏
Mar 23 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
python3中TQDM库安装及使用详解
Nov 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
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
webpack3之loader全解析
2017/10/26 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
使用python Django做网页
2013/11/04 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
银行授权委托书格式
2014/10/10 职场文书
简历中自我评价范文
2015/03/11 职场文书
2015公司年度工作总结
2015/05/14 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
如何写好竞聘报告
2019/04/03 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js