更加顆粒級的緩存框架使用方法是對單個視圖的輸出進行緩存。 django.views.decorators.cache定義了一個自動緩存視圖響應的cache_page裝飾器。 他是很容易使用的:
1
2
3
4
5
6
|
from django.views.decorators.cache import cache_page def my_view(request): # ... my_view = cache_page(my_view, 60 * 15 ) |
也可以使用Python2.4的裝飾器語法:
1
2
3
|
@cache_page ( 60 * 15 ) def my_view(request): # ... |
cache_page 只接受一個參數: 以秒計的緩存超時時間。 在前例中, “my_view()” 視圖的結果將被緩存 15 分鐘。 (注意: 為了提高可讀性,該參數被書寫為 60 * 15 。 60 * 15 將被計算為 900 ,也就是說15 分鐘乘以每分鐘 60 秒。)
和站點緩存一樣,視圖緩存與 URL 無關。 如果多個 URL 指向同一視圖,每個視圖將會分別緩存。 繼續 my_view 范例,如果 URLconf 如下所示:
1
2
3
|
urlpatterns = ('', (r '^foo/(\d{1,2})/$' , my_view), ) |
那么正如你所期待的那樣,發送到 /foo/1/ 和 /foo/23/ 的請求將會分別緩存。 但一旦發出了特定的請求(如: /foo/23/ ),之后再度發出的指向該 URL 的請求將使用緩存。