设置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 缓存控制的更多相关文章

  1. “全能”选手—Django 1.10文档中文版Part1

    本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...

  2. Django缓存机制--rest_framework中节流源码使用的就是django提供的缓存api

    一.配置缓存   https://www.jb51.net/article/124434.htm 二.缓存全站.页面.局部   三.自我控制的简单缓存API API 接口为:django.core.c ...

  3. 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 ...

  4. Django 中的缓存问题

    Django 中的缓存问题 简单介绍 ​ 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. ​ 当一个网站的用户访问量很大的 ...

  5. Android okHttp网络请求之缓存控制Cache-Control

    前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...

  6. “全能”选手—Django 1.10文档中文版Part3

    Django 1.10官方文档的入门教程已经翻译完毕,后续的部分将不会按照顺序进行翻译,而是挑重点的先翻译. 有兴趣的可以关注我的博客. 第一部分传送门 第二部分传送门 第四部分传送门 3.2 模型和 ...

  7. 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 ...

  8. 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他

    [源码下载] 重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cooki ...

  9. 基于maven插件的缓存控制插件

    asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控 ...

随机推荐

  1. Java生成随机图片验证码

    前台html代码 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 <div style="margin-top: 50px;&quo ...

  2. 使用dtree构建框架导航

    前言: 该例子就是个框架导航 , 左边包含dtree的框架,点击上面的节点右边框架显示 说明步骤: 1. 首先获得dtree  http://www.destroydrop.com/javascrip ...

  3. Serializable 接口(序列化)

    目录 Serializable 接口(序列化) 前言 用途 如何实现 异常 serialVersionUID transient关键字 Serializable 接口(序列化) 前言 查看API文档时 ...

  4. Java枚举的作用和用法

    从没有枚举的时代说起 在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量.例如: [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 ...

  5. Cenos配置Android集成化环境, 最终Centos libc库版本过低放弃

    To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon ...

  6. 为什么有这么多人呼吁要取代Facebook?

    扎克伯格这段时间算是栽了,身为人生大赢家的他或许正在遭受最为灰暗的时刻.因为泄露5000万用户数据这一事件,Facebook股价暴跌且扎克伯格身家缩水.被英国与美国相关部门调查.#删除Facebook ...

  7. 配置Oracle10g即时客户端plsql的配置

    看到网上有好多的Oracle客户端精简版本,但是这些都不是出自Oracle官方之手,难免可能会出现一些问题.经过我奋战一个小时终于搞定了这个 Oracle10g即时客户端 的配置了 1.先到Oracl ...

  8. mysql表关系

    表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...

  9. 软件测试价值观-SMBT新理念

    软件测试价值观-SMBT新理念 作者:张元礼 http://blog.csdn.net/vincetest 近年来有不少软件测试同行不少有些困惑-软件测试人员的价值在哪里?我们怎么才能做好软件测试?怎 ...

  10. Android中JNI的使用方法(转载)

    Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写, ...