django 从零开始 10 缓存控制
设置django缓存,比如一些访问频繁的页面 首页 并且不需要进行太大的变化,那么可以设置为一定是时间内请求该url视图 不经过视图计算直接返回缓存的内容
django文档选择了几种方式,但是我这边只尝试 文件缓存
第一种 全局缓存
首先只settings中设置缓存方式
注意 这是全局缓存,不管你有没有在视图函数上进行缓存装饰,不论你访问什么url 都会给你缓存 默认600s
# 这是保存在文件夹系统中 注意是绝对位置(从根目录开始),必须保证服务器对你列出的路径具有读写权限
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': r'C:\Users',#windows下的示例 我实在win下开发 没有则创建该文件夹 不然出错 Linux 也是
'TIMEOUT': 300, 全局缓存时间 'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3,
# 缓存到达最大个数之后,Django会自动清空3/1 ,设置为10 就剔除10/1
}
}
}
并在中间件设置以下
在settings.py文件中对中间件进行一个设置(我没设置也能用??) 最开始和最后面
MIDDLEWARE = [
# 在中间件最开始添加该字段
'django.middleware.cache.UpdateCacheMiddleware',
# django 自带的
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 末尾添加该字段
'django.middleware.cache.FetchFromCacheMiddleware',
]
第二种 局部缓存 (视图缓存)
貌似保存在内存中
在views.py中对函数进行一个装饰
# 比如以下测试函数
from django.views.decorators.cache import cache_page
@cache_page(60*3) # 三分钟缓存
def abc(request,code):
path = reverse('user:abc', args=(code,))
print(path)
return HttpResponse('<a href='+path+'>%s</a>' % path)
urls 设置为
urlpatterns = [
path(r'abc/<int:code>',abc,name='abc'),
]
进行一个测试

显示出时间为 max_age=180 秒说明设置成功 ,并在settings中设置的缓存文件地址中出现了 缓存文件

除了第一次请求 视图进行了计算,第二次第三次...都是没有进行一个计算,直接返回了
这边进行一个等待

我设置3分钟缓存,但是等待了一段时间再次请求同一个url 能看到再次进行了计算
如果每次参数不同,默认会去缓存文件夹中查找有没有存在的缓存,如果不拥有则重新计算添加缓存

第三种 模板缓存
pass
第四种 上游缓存
比如nginx 缓存,服务商缓存 pass
更新 有一个问题, 全局缓存对所有的识图进行一个缓存 装饰器缓存对装饰的视图函数
如果有一些页面是私人页面,比如 a用户访问个人用户资料页面,b用户也访问用户资料页面,按照先后顺序,进行了一个缓存,那么b访问的个人页面是a用户的缓存(一般是查询页面进行缓存,这里我们就不计较了),所以需要一些特殊手段进行一个判断,比如cookies
我暂时还没有去实现,展示先发一个说的文章 http://djangobook.py3k.cn/2.0/chapter15/
引用
https://www.cnblogs.com/hepingqingfeng/p/6656252.html
https://www.cnblogs.com/alexzhang92/p/9529708.html
https://www.cnblogs.com/sss4/p/7563423.html
django 从零开始 10 缓存控制的更多相关文章
- “全能”选手—Django 1.10文档中文版Part1
本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...
- Django缓存机制--rest_framework中节流源码使用的就是django提供的缓存api
一.配置缓存 https://www.jb51.net/article/124434.htm 二.缓存全站.页面.局部 三.自我控制的简单缓存API API 接口为:django.core.c ...
- Django 1.10文档中文版Part1
目录 第一章.Django1.10文档组成结构1.1 获取帮助1.2 文档的组织形式1.3 第一步1.4 模型层1.5 视图层1.6 模板层1.7 表单1.8 开发流程1.9 admin站点1.10 ...
- Django 中的缓存问题
Django 中的缓存问题 简单介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的 ...
- Android okHttp网络请求之缓存控制Cache-Control
前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...
- “全能”选手—Django 1.10文档中文版Part3
Django 1.10官方文档的入门教程已经翻译完毕,后续的部分将不会按照顺序进行翻译,而是挑重点的先翻译. 有兴趣的可以关注我的博客. 第一部分传送门 第二部分传送门 第四部分传送门 3.2 模型和 ...
- PHP flush sleep 输出缓存控制详解
1 2 3 4 5 6 ob_start,flush,ob_flush for($i=0;$i<</SPAN>10;$i++) { echo $i.''; flush(); slee ...
- 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他
[源码下载] 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cooki ...
- 基于maven插件的缓存控制插件
asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控 ...
随机推荐
- Grails Controller - redirect 方法
官方文档: http://docs.grails.org/latest/ref/Controllers/redirect.html 网页跳转方法1: // 在一个Action中直接跳转到另外一个Act ...
- Codeforces Roundd #573 (Div. 2)
D. Tokitsukaze, CSL and Stone Game 题意:有n堆石头,每人每次只能去一颗石子,若轮到当前人没任何一堆石子可以取或当前人取到后剩下有俩堆石子个数相同则当前人输: 给定石 ...
- python-django框架-电商项目-首页开发_20191122
python-django框架-电商项目-首页开发 业务背景: 用户浏览网站一定是先到首页, 没有登陆的话首页内容完全一样,而且是不经常变化的, 一段时间内,有100用户访问,就要有几个用户就要查询多 ...
- 植物基因组|注释版本问题|重测序vs泛基因组
生命组学: 细菌和其他物种比,容易发生基因漂移,duplication和重排. 泛基因组学研究的一般思路是通过comparison找到特殊基因区域orspecific gene,研究其调控机制(即通过 ...
- python的列表list和集合set操作
以下是一些python的list和set的基本操作 1.list的一些操作 list = [1, 2, 3] list.append(5) print(list) list.extend([7, 8] ...
- python标准库-array 模块
原文地址:http://www.bugingcode.com/blog/python_module_array.html array 模块是python中实现的一种高效的数组存储类型.它和list相似 ...
- 通过virt-manager给Windowsxp系统配置virtio驱动
在虚拟机的detail上添加一个硬件设备. 下载virtio.iso文件,我使用的版本126,具体的virtio驱动放到了10.2上的itest的目录中,使用可以找. 在配置中,添加virtio硬盘. ...
- 引入 JPEGCodec;JPEGImageEncoder; 图片处理;MyEclipse编译时报错处理
在Eclipse中处理图片,需要引入两个包: import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JP ...
- 华为Mate 10牵手Microsoft Translator,让离线翻译可媲美在线神经网
编者按:日前,华为新发布的Mate 10手机系列采用Microsoft Translator技术实现了AI驱动型离线翻译功能.华为Mate 10是首款具有NPU(专用神经处理单元)的手机,可用于加速 ...
- AI未来如何应对人类的欺骗?
人工智能正以可预见.不可预见的种种形式无孔不入地涉足社会的各个层面,这既让人兴奋,也让人不安.我们能够预测到这样的情绪反应,但我们真的能够预测到人工智能所涉及的相关风险吗? 假若现在是2022年,你乘 ...