Django4.0 緩存框架-站點緩存

2022-03-17 14:31 更新

一旦緩存設(shè)置完畢,使用緩存最簡便的方式就是緩存整個站點。你需要在 ?MIDDLEWARE ?設(shè)置中添加 ?django.middleware.cache.UpdateCacheMiddleware?和 ?django.middleware.cache.FetchFromCacheMiddleware?,像下面這個例子一樣:

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
]

最后,在 Django 設(shè)置文件里添加下面的必需配置:

  • ?CACHE_MIDDLEWARE_ALIAS ?-- 用于存儲的緩存別名。
  • ?CACHE_MIDDLEWARE_SECONDS ?-- 應(yīng)緩存每個頁面的秒數(shù)。
  • ?CACHE_MIDDLEWARE_KEY_PREFIX ?-- 如果使用相同的 ?Django installation ?,通過多站點進行緩存共享,請將此值設(shè)置為站點名,或者設(shè)置成在Django 實例中唯一的其他字符串,以此防止鍵沖突。如果你不介意,可以設(shè)置成空字符串。

在請求和響應(yīng)標頭允許的情況下,?FetchFromCacheMiddleware ?緩存狀態(tài)為200的 ?GET ?和 ?HEAD ?響應(yīng)。對于具有不同查詢參數(shù)的相同URL的請求的響應(yīng)被認為是單獨的頁面,并分別緩存。這個中間件期望一個?HEAD?請求的響應(yīng)頭與相應(yīng)的GET請求具有相同的響應(yīng)頭;在這種情況下,它可以為?HEAD?請求返回一個緩存的?GET?響應(yīng)。

此外,?UpdateCacheMiddleware ?在每個 ?HttpResponse ?里會自動設(shè)置一些 ?headers?,這會影響 下游緩存:

  • 設(shè)置 ?Expires header? 為當前日期/時間加上定義的 ?CACHE_MIDDLEWARE_SECONDS ?
  • 設(shè)置 ?Cache-Control header? 為緩存頁面的最長時間,同樣,在 ?CACHE_MIDDLEWARE_SECONDS? 里設(shè)置

如果一個視圖設(shè)置了它自己的緩存過期時間(比如在它的 ?Cache-Control header? 里有 ?max-age? 部分),然后頁面將被緩存起來直到過期,而不是 ?CACHE_MIDDLEWARE_SECONDS ?。使用在 ?django.views.decorators.cache? 的裝飾器,你可以很輕松的設(shè)置視圖的過期時間(使用 ?cache_control()? 裝飾器)或者禁用視圖緩存(使用 ?never_cache()? 裝飾器)。
如果設(shè)置 ?USE_I18N ?為 ?True?,然后已生成的緩存鍵將包含動態(tài) ?language ?的名稱。這將允許你輕松緩存使用多語言的站點,而不用再創(chuàng)建緩存鍵。
當 ?USE_TZ ?被設(shè)置為 ?True ?時,緩存鍵也包括當前時區(qū)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號