浅谈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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python操作Word批量生成文章的方法
Jul 28 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
详解Python3 pickle模块用法
Sep 16 Python
django 外键创建注意事项说明
May 20 Python
keras之权重初始化方式
May 21 Python
python实现简单石头剪刀布游戏
Oct 24 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对字符串的递增运算分析
2010/08/08 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python验证码识别的方法
2015/07/10 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
小学生元旦广播稿
2014/02/21 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
学术会议邀请函
2015/01/30 职场文书
财务工作失误检讨书
2015/02/19 职场文书
升职自荐信怎么写
2015/03/05 职场文书
法律意见书范本
2015/06/04 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
python如何查找列表中元素的位置
2022/05/30 Python