Django学习之 view 缓存详解
本文和大家分享的主要是django view 缓存相关内容,一起来看看吧,希望对大家学习django有所帮助。
view 缓存
要实现view 缓存,我们只需调用cache_page装饰器即可
django.views.decorators.cache.cache_page()
django.views.decorators.cache 中的 cache_page 装饰器会自动缓存view 的 response, 使用简单
示例
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...
如下特点
1)多个 URL 指向同一个 view, 会被分别缓存
2)第一个参数是缓存 timeout
3)可选参数:
cache: 可指定缓存 (默认使用 default 缓存)
key_prefix: 功能与 CACHE_MIDDLEWARE_KEY_PREFIX 一样会与 CACHES 中的KEY_PREFIX 串联
除了在view方法上使用cache_page 装饰器以外也可以在 URLconf 中使用 cache_page 装饰器:
示例
from django.views.decorators.cache import cache_page
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
]
演示环境说明
1、操作系统Ubuntu
2、数据库MySQL
3、Django 版本 1.8
4、IDE PyCharm, VIM
站点缓存演示
首先进入settings文件,配置好缓存后端,本次演示使用的是redis缓存后端
配置MIDDLEWARE_CLASSES,首先将update这个中间件放在MIDDLEWARE_CLASSES前面,然后将fetch中间件放在最后
配置好缓存中间件以后,还可以配置我们所需的参数。这里的示例介绍将seconds设置为3600秒_key_prefix设置为SeteCache,在以后生成的key里面,SeteCache将会作为一个标志
启动站点
站点启动好后可以通过浏览器访问我们的网站,这样是可以访问成功的,并可以进行点击
查看Redis内容,需要指定数据库ID,下图中两个cache_page,会缓存_header和_page,sitecache是刚刚设置的缓存标志,已经自动被加到这里面了
尝试修改代码,因为缓存是有一个过期时间的,缓存没有过期之前,我们访问的数据都不会更新 修改index.html
把Dashboard test改为Dashboard,保存退出
再次访问网站,发现Dashboard test改为Dashboard,test已经消失了
View缓存演示
同样配置好缓存后端,然后才可以通过cache_page缓存
进入settings,同样用redis作为缓存后端
输入代码,进入项目
这里将index1做了一个缓存,缓存方式比较简单。将装饰器放在view函数的前面
通过另一种方式对view做缓存
访问站点之前检查是否有缓存,如果有就清空
访问浏览器 Dashboard v1 index1缓存
访问Dashboard v2 index2缓存