[英]what's differece between the django's cache ?the The per-site cache,The per-view cache,Specifying per-view cache and Template fragment caching
我知道django有一些緩存方法,例如每個站點緩存,每個視圖緩存,指定每個視圖緩存和模板片段緩存,但是這些緩存之間有什么區別? 每站點緩存意味着緩存系統緩存整個站點? 我如何理解“緩存整個網站”一詞?
我認為文檔在描述此方面做得很好,但是我將在此處粘貼並給出一些描述。
緩存整個站點意味着django將嘗試緩存通過中間件設置的每個視圖。
每個站點緩存文檔
http://docs.djangoproject.com/en/dev/topics/cache/#the-per-site-cache
一旦設置了緩存,使用緩存的最簡單方法就是緩存整個站點。
基本上,它是一組中間件,因此它緩存所有視圖。 中間件適用於每個請求/響應。
每個視圖緩存文檔
http://docs.djangoproject.com/en/dev/topics/cache/#the-per-view-cache
使用緩存框架的更精細的方法是緩存單個視圖的輸出。 django.views.decorators.cache定義了一個cache_page裝飾器,它將自動為您緩存視圖的響應。
這是每個視圖緩存。 您可以通過將@cache_page
裝飾器應用於特定視圖來決定緩存某個視圖(與上述所有視圖相對)
模板片段緩存文檔
http://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching
{%cache%}模板標記在給定的時間內緩存了塊的內容。
這使您可以緩存模板的大塊(而不是上面的整個視圖),例如,您可以在模板中緩存昂貴的查詢,而站點的其他部分仍然可以動態提供。
如果某些片段無法緩存,這將很有用。例如,每個視圖緩存都無法實現在頂部顯示登錄用戶的經典問題,因為需要更新用戶,因此緩存無效。
如果您進一步閱讀文檔,則還將訪問緩存API:
緩存API文檔
http://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api
基本上,這就是您以python代碼(與上面的模板相對)來控制緩存的方式。
# imagine you have a function that takes a day to complete.
cache.set('very_expensive_homepage_logic', takes_a_day_to_calculate())
# now if you call get() with your key, it will be returned and you won't have to wait a day to calculate.
cache.get('very_expensive_homepage_logic')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.