站点级 Cache
一旦高速缓存设置,最简单的方法是使用缓存缓存整个网站。 您 需要添加'django.middleware.cache.UpdateCacheMiddleware'
和 'django.middleware.cache.FetchFromCacheMiddleware'
到您的MIDDLEWARE_CLASSES
设置中,在这个例子中是:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
注意:
不,这里并没有排版错误: 修改的中间件,必须放在列表的开始位置,而fectch中间件,必须放在最后。 细节有点费解,如果您想了解完整内幕请参看下面的MIDDLEWARE_CLASSES
顺序。
然后,在你的Django settings文件里加入下面所需的设置:
CACHE_MIDDLEWARE_SECONDS
:每个页面应该被缓存的秒数。CACHE_MIDDLEWARE_KEY_PREFIX
:如果缓存被多个使用相同Django安装的网站所共享,那么把这个值设成当前网站名,或其他能代表这个Django实例的唯一字符串,以避免key发生冲突。如果你不在意的话可以设成空字符串。
缓存中间件缓存每个没有GET或者POST参数的页面。或者,如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY
设置为True
,只有匿名请求(即不是由登录的用户)将被缓存。如果想取消用户相关页面(user-specific pages
)的缓存,例如Djangos 的管理界面,这是一种既简单又有效的方法。CACHE_MIDDLEWARE_ANONYMOUS_ONLY
,你应该确保你已经启动AuthenticationMiddleware
。
此外,缓存中间件为每个HttpResponse
自动设置了几个头部信息:
- 当一个新(没缓存的)版本的页面被请求时设置
Last-Modified
头部为当前日期/时间。 - 设置
Expires
头部为当前日期/时间加上定义的CACHE_MIDDLEWARE_SECONDS
。 - 设置
Cache-Control
头部来给页面一个最长的有效期,值来自于CACHE_MIDDLEWARE_SECONDS
设置。
参阅更多的中间件第17章。
如果视图设置自己的缓存到期时间(即它有一个最大年龄在头部信息的Cache-Control
中),那么页面将缓存直到过期,而不是CACHE_MIDDLEWARE_SECONDS
。使用django.views.decorators.cache
装饰器,您可以轻松地设置视图的到期时间(使用cache_control
装饰器)或禁用缓存视图(使用never_cache
装饰器)。请参阅下面的“使用其他头部信息”小节以了解装饰器的更多信息。
{$ activeFileHint $}