使用緩存

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. 模板片段緩存

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容