新聞中心
django.views.decorators.cache.cache_page(timeout, *, cache=None, key_prefix=None)
使用緩存框架的通用辦法是緩存視圖結(jié)果。?django.views.decorators.cache? 定義了一個(gè) ?cache_page?裝飾器,它將自動(dòng)緩存視圖的響應(yīng):

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元武義做網(wǎng)站,已為上家服務(wù),為武義各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...?cache_page?使用了一個(gè)單獨(dú)的參數(shù):緩存過期時(shí)間,以秒為單位。在上面的例子里,?my_view()? 視圖的結(jié)果將緩存15分鐘。(注意,我們用 60 * 15 這樣的方式編寫,目的是方便閱讀。 60 * 15 將計(jì)算為 900,也就是15分鐘乘以每分鐘60秒。)
?cache_page?設(shè)置的緩存超時(shí)優(yōu)先于 ?Cache-Control?頭中的 ?max-age?指令。
和緩存站點(diǎn)一樣,對(duì)視圖緩存,以 URL 為鍵。如果許多 URL 指向相同的視圖,每個(gè) URL 將被單獨(dú)緩存。繼續(xù)以 ?my_view?為例,如果你的 ?URLconf?是這樣的:
urlpatterns = [
path('foo//', my_view),
] 那么 ?/foo/1/? 和 ?/foo/23/? 的請(qǐng)求將被分別緩存,正如你所料。但一旦部分 URL (比如 ?/foo/23/? )已經(jīng)被請(qǐng)求,那么隨后的請(qǐng)求都將使用緩存。
?cache_page?也可以傳遞可選關(guān)鍵字參數(shù) ?cache?,它指引裝飾器在緩存視圖結(jié)果時(shí)使用特定的緩存(來(lái)自 ?CACHES?設(shè)置)。默認(rèn)情況下,將使用默認(rèn)緩存,但你可以指定任何你想要的緩存:
@cache_page(60 * 15, cache="special_cache")
def my_view(request):
...你可以基于每個(gè)視圖覆蓋緩存前綴。?cache_page?傳遞了一個(gè)可選關(guān)鍵字參數(shù) ?key_prefix?,它的工作方式與中間件的 ?CACHE_MIDDLEWARE_KEY_PREFIX?相同??梢赃@樣使用它:
@cache_page(60 * 15, key_prefix="site1")
def my_view(request):
...?key_prefix?和 ?cache?參數(shù)可能需要被一起指定。?key_prefix?參數(shù)和 ?CACHES?下指定的 ?KEY_PREFIX?將被連接起來(lái)。
此外, ?cache_page?在響應(yīng)中自動(dòng)設(shè)置 ?Cache-Control? 和 ?Expires?頭, 這會(huì)影響 下游緩存.
在 URLconf 中指定視圖緩存
上一節(jié)的例子硬編碼了視圖被緩存的事實(shí),因?yàn)??cache_page?改變了 ?my_view?函數(shù)。這種方法將你的視圖和緩存系統(tǒng)耦合起來(lái),這樣并不理想。例如,你可能想在其他沒有緩存的站點(diǎn)上重用這個(gè)視圖函數(shù),或者你可能想分發(fā)這個(gè)視圖給那些想使用視圖但不想緩存它們的人員。解決這些問題的辦法是在 ?URLconf?中指定視圖緩存,而不是視圖函數(shù)旁邊指定。
當(dāng)你在 ?URLconf?中使用 ?cache_page?時(shí),可以這樣包裝視圖函數(shù)。這是之前提到的 ?URLconf?:
urlpatterns = [
path('foo//', my_view),
] 將 ?my_view?包含在 ?cache_page?中:
from django.views.decorators.cache import cache_page
urlpatterns = [
path('foo//', cache_page(60 * 15)(my_view)),
] 標(biāo)題名稱:創(chuàng)新互聯(lián)Django4.0教程:Django4.0 緩存框架-視圖緩存
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/cdeidjd.html


咨詢
建站咨詢
