1. 站点级缓存
一旦高速缓存设置,最简单的方法是使用缓存缓存整个网站。
你需要把 django.middleware.cache.UpdateCacheMiddleware
和 django.middleware.cache.FetchFromCacheMiddleware
两个中间件添加到你设置文件的 MIDDLEWARE_CLASSES
设置里,如例子所示:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
注意, update
中间件,必须放在列表的开始位置,而 fectch
中间件,必须放在最后。
2. 单个view缓存
更加轻巧的缓存框架使用方法是对单个有效视图的输出进行缓存。
django.views.decorators.cache
定义了一个自动缓存视图响应的 cache_page
装饰器,使用非常简单:
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...
cache_page 接受一个参数:timeout,单位为秒。
如果多个 URL 指向同一视图,每个URL将会分别缓存。如果 URLconf 如下所示:
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$', my_view),
]
那么,发送到 URL "/foo/1/" 和 "/foo/23/" 的会被分别缓存。但是一旦一个明确的 URL (比如:/foo/23/) 已经被请求过了, 之后再度发出的指向该 URL 的请求将使用缓存。
cache_page 也可以使用一些额外的参数,如:cache
,该参数指明具体使用哪一个缓存(在你的 setting 文件的 CACHES 设置里,默认为:default) :
@cache_page(60 * 15, cache="special_cache")
def my_view(request):
...
3. 在 URLconf 中指定每个视图的缓存
使用缓存前的 URLconf :
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$', my_view),
]
使用缓存后的 URLconf :
from django.views.decorators.cache import cache_page
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
]