更加顆粒級(jí)的緩存框架使用方法是對(duì)單個(gè)視圖的輸出進(jìn)行緩存。 django.views.decorators.cache定義了一個(gè)自動(dòng)緩存視圖響應(yīng)的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的裝飾器語(yǔ)法:
1
2
3
|
@cache_page ( 60 * 15 ) def my_view(request): # ... |
cache_page 只接受一個(gè)參數(shù): 以秒計(jì)的緩存超時(shí)時(shí)間。 在前例中, “my_view()” 視圖的結(jié)果將被緩存 15 分鐘。 (注意: 為了提高可讀性,該參數(shù)被書寫為 60 * 15 。 60 * 15 將被計(jì)算為 900 ,也就是說(shuō)15 分鐘乘以每分鐘 60 秒。)
和站點(diǎn)緩存一樣,視圖緩存與 URL 無(wú)關(guān)。 如果多個(gè) URL 指向同一視圖,每個(gè)視圖將會(huì)分別緩存。 繼續(xù) my_view 范例,如果 URLconf 如下所示:
1
2
3
|
urlpatterns = ('', (r '^foo/(\d{1,2})/$' , my_view), ) |
那么正如你所期待的那樣,發(fā)送到 /foo/1/ 和 /foo/23/ 的請(qǐng)求將會(huì)分別緩存。 但一旦發(fā)出了特定的請(qǐng)求(如: /foo/23/ ),之后再度發(fā)出的指向該 URL 的請(qǐng)求將使用緩存。