Django给我们提供了三种缓存方式:
- 站点级缓存————缓存整个网站
- 单个view缓存————对单个有效的视图的输出进行缓存
- 模板片段缓存————缓存模板里面的某一部分内容
为什么要用缓存
由于Django是动态网站,所以每次请求均会去数据库进行相应的操作,当程序访问量大时,耗时必然会增加,最简单解决方式是使用缓存,将某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时(时间可以设置),则不再去执行view中的操作,而是直接从缓存中读取内容并直接返回。
另外,缓存只是一类统称,一般其介质是速度很快的内存,但也可以是能加快数据读取的其它方式。
什么时候适合用缓存
对页面实时性要求不高的页面,可以用缓存。
缓存的配置
django配置缓存提供了6种方式(settings.py)。
- 开发调试
- 内存
- 文件
- 数据库
- Memcache缓存(python-memcached模块)
- Memcache缓存(pylibmc模块)
开发调试
说明:此为开始调试用,实际内部不做任何操作
1 | CACHES = { |
内存
1 | CACHES = { |
注意,每个进程将有它们自己的私有缓存实例,这意味着不存在跨进程的缓存。这也意味着本地内存缓存不是特别节省内存,因此它不适合生产环境,不过它在开发环境中表现很好。
文件
1 | CACHES = { |
数据库
1 | CACHES = { |
注:执行创建表命令 python manage.py createcachetable
Memcache缓存(python-memcached模块)
1 | #单台机器 |
Memcache缓存(pylibmc模块)
1 | CACHES = { |
django中缓存设置参数
1 | BACKEND # 引擎 |
django 缓存应用
站点级缓存
将django.middleware.cache.UpdateCacheMiddleware
和django.middleware.cache.FetchFromCacheMiddleware
添加到MIDDLEWARE设置中
1 | MIDDLEWARE = [ |
注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。然后,添加下面这些需要的参数到settings文件里:
1 | CACHE_MIDDLEWARE_ALIAS : 用于存储的缓存的别名 |
单个view缓存
- 在视图View中使用cache
1 | from django.http import HttpResponse |
- 在路由URLConf中使用cache
1 | from django.views.decorators.cache import cache_page |
模板片段缓存
1 | {% load cache %} |