2011-08-14 55 views
0

這是從django documentationDjango的緩存和條件裝飾

condition(etag_func=None, last_modified_func=None) 
etag(etag_func) 
last_modified(last_modified_func) 

These decorators can be used to generate ETag and Last-Modified headers 

,然而,這也從django documentation

Additionally, the cache middleware automatically sets a few headers in each HttpResponse: 
Sets the Last-Modified header to the current date/time when a fresh (uncached) version of the page is requested. 
Sets the Expires header to the current date/time plus the defined CACHE_MIDDLEWARE_SECONDS. 
Sets the Cache-Control header to give a max age for the page -- again, from the CACHE_MIDDLEWARE_SECONDS setting. 

所以我想知道什麼樣的價值不的Last-Modified需要的時候我使用站點緩存和條件裝飾器。
編輯:另外,你會推薦使用它們,還是隻使用它們之一?

回答

1

緩存中間件將只設置ETagLast-ModifiedExpires頭如果它們不存在(見patch_response_headers方法是從UpdateCacheMiddleware調用)。

而且由於裝飾器將在視圖返回響應之後直接執行,裝飾器標題將在中間件運行時已經存在。

總之:Last-Modified將具有條件/ last_modified裝飾器的值。

+0

我接受了你的答案,但是,你認爲哪一個是最佳實踐?同時使用它們,還是讓緩存句柄最後修改? – yasar