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插件的缓存控 ...
随机推荐
- Java生成随机图片验证码
前台html代码 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 <div style="margin-top: 50px;&quo ...
- 使用dtree构建框架导航
前言: 该例子就是个框架导航 , 左边包含dtree的框架,点击上面的节点右边框架显示 说明步骤: 1. 首先获得dtree http://www.destroydrop.com/javascrip ...
- Serializable 接口(序列化)
目录 Serializable 接口(序列化) 前言 用途 如何实现 异常 serialVersionUID transient关键字 Serializable 接口(序列化) 前言 查看API文档时 ...
- Java枚举的作用和用法
从没有枚举的时代说起 在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量.例如: [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 ...
- Cenos配置Android集成化环境, 最终Centos libc库版本过低放弃
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon ...
- 为什么有这么多人呼吁要取代Facebook?
扎克伯格这段时间算是栽了,身为人生大赢家的他或许正在遭受最为灰暗的时刻.因为泄露5000万用户数据这一事件,Facebook股价暴跌且扎克伯格身家缩水.被英国与美国相关部门调查.#删除Facebook ...
- 配置Oracle10g即时客户端plsql的配置
看到网上有好多的Oracle客户端精简版本,但是这些都不是出自Oracle官方之手,难免可能会出现一些问题.经过我奋战一个小时终于搞定了这个 Oracle10g即时客户端 的配置了 1.先到Oracl ...
- mysql表关系
表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...
- 软件测试价值观-SMBT新理念
软件测试价值观-SMBT新理念 作者:张元礼 http://blog.csdn.net/vincetest 近年来有不少软件测试同行不少有些困惑-软件测试人员的价值在哪里?我们怎么才能做好软件测试?怎 ...
- Android中JNI的使用方法(转载)
Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写, ...