博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 从零开始 10 缓存控制
阅读量:4964 次
发布时间:2019-06-12

本文共 2070 字,大约阅读时间需要 6 分钟。

 

设置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('%s' % path)

urls 设置为

urlpatterns = [      path(r'abc/
',abc,name='abc'),]

 

 

进行一个测试

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

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

这边进行一个等待 

我设置3分钟缓存,但是等待了一段时间再次请求同一个url 能看到再次进行了计算

 如果每次参数不同,默认会去缓存文件夹中查找有没有存在的缓存,如果不拥有则重新计算添加缓存

 

 

第三种 模板缓存 

pass

 

第四种 上游缓存

比如nginx 缓存,服务商缓存 pass

 

 


 


 

更新 有一个问题, 全局缓存对所有的识图进行一个缓存      装饰器缓存对装饰的视图函数

如果有一些页面是私人页面,比如 a用户访问个人用户资料页面,b用户也访问用户资料页面,按照先后顺序,进行了一个缓存,那么b访问的个人页面是a用户的缓存(一般是查询页面进行缓存,这里我们就不计较了),所以需要一些特殊手段进行一个判断,比如cookies

我暂时还没有去实现,展示先发一个说的文章  

 

 

引用

 

转载于:https://www.cnblogs.com/zengxm/p/11320181.html

你可能感兴趣的文章
android,radio,checkbox
查看>>
[转](.NET Core C#) AES Encryption
查看>>
[转]EntityFramework中常用的数据修改方式
查看>>
[转]SQL Collation冲突解决 临时表
查看>>
[转]Gitlab-CI持续集成之Runner配置和CI脚本
查看>>
Spark&Hive结合起来
查看>>
使用Flex和java servlet上传文件
查看>>
软件工程的实践项目课程的自我目标
查看>>
POJ 1321 棋盘问题 (深搜)
查看>>
自定义TabBar
查看>>
最近戴着眼镜坐电脑前总是不自觉的眼痛就搜了下怎么保护眼睛无意中看到了这篇文章希望广大爱好编程的朋友多注意保护自己的眼睛!!...
查看>>
Eclipse快捷键大全
查看>>
Let's Chat ZOJ - 3961
查看>>
该不该主动去联系多年未联系的老同学?看完这篇文章你再回答
查看>>
业务逻辑漏洞个人经验集锦【不定时更新~】
查看>>
[Swift] Storyboard outlet and action
查看>>
[Compose] 10. Capture Side Effects in a Task
查看>>
[Javascript AST] 0. Introduction: Write a simple BabelJS plugin
查看>>
[Core Javascirpt] Basic Metaprogramming: Dynamic Method
查看>>
[Angular2 Router] Use Params from Angular 2 Routes Inside of Components
查看>>