使用缓存

1. 站点级缓存

一旦高速缓存设置,最简单的方法是使用缓存缓存整个网站。

你需要把 django.middleware.cache.UpdateCacheMiddlewaredjango.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)),
]




4. 模板片段缓存

你可能感兴趣的:(使用缓存)