CACHE_BACKEND參數
每個緩衝後端都可能使用參數。 它們在CACHE_BACKEND設定中以查詢字串形式給出。 有效參數如下:
- timeout:用於緩衝的到期時間,以秒為單位。 這個參數預設被設定為300秒(五分鐘)。
- max_entries:對於記憶體,檔案系統和資料庫後端,快取允許的最大條目數,超出這個數則舊值將被刪除。 這個參數預設是300。
- cull_percentage :當達到 max_entries 的時候,被刪除的條目比率。 實際的比率是 1/cull_percentage ,所以設定cull_frequency=2就是在達到 max_entries 的時候去除一半數量的緩衝。
把 cull_frequency 的值設定為 0 意味著當達到 max_entries 時,緩衝將被清空。 這將以很多緩衝丟失為代價,大大提高接受訪問的速度。
在這個例子中, timeout 被設成 60
CACHE_BACKEND = "memcached://127.0.0.1:11211/?timeout=60"
而在這個例子中, timeout 設為 30 而 max_entries 為 400 :
CACHE_BACKEND = "locmem:///?timeout=30&max_entries=400"
其中,非法的參數與非法的參數值都將被忽略。
網站級 Cache
一旦快取設定,最簡單的方法是使用緩衝緩衝整個網站。 您 需要添加'django.middleware.cache.UpdateCacheMiddleware'和 ‘django.middleware.cache.FetchFromCacheMiddleware'到您的MIDDLEWARE_CLASSES設定中,在這個例子中是:
MIDDLEWARE_CLASSES = ( 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware',)
注意:
不,這裡並沒有排版錯誤: 修改的中介軟體,必須放在列表的開始位置,而fectch中介軟體,必須放在最後。 細節有點費解,如果您想瞭解完整內幕請參看下面的MIDDLEWARE_CLASSES順序。
然後,在你的Django settings檔案裡加入下面所需的設定:
- CACHE_MIDDLEWARE_SECONDS :每個頁面應該被緩衝的秒數。
- CACHE_MIDDLEWARE_KEY_PREFIX :如果緩衝被多個使用相同Django安裝的網站所共用,那麼把這個值設成當前網站名,或其他能代表這個Django執行個體的唯一字串,以避免key發生衝突。 如果你不在意的話可以設成Null 字元串。
緩衝中介軟體緩衝每個沒有GET或者POST參數的頁面。 或者,如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY設定為True,只有匿名請求(即不是由登入的使用者)將被緩衝。 如果想取消使用者相關頁面(user-specific pages)的緩衝,例如Djangos 的管理介面,這是一種既簡單又有效方法。 CACHE_MIDDLEWARE_ANONYMOUS_ONLY,你應該確保你已經啟動AuthenticationMiddleware。
此外,緩衝中介軟體為每個HttpResponse自動化佈建了幾個頭部資訊:
- 當一個新(沒緩衝的)版本的頁面被請求時設定Last-Modified頭部為當前日期/時間。
- 設定Expires頭部為當前日期/時間加上定義的CACHE_MIDDLEWARE_SECONDS。
- 設定Cache-Control頭部來給頁面一個最長的有效期間,值來自於CACHE_MIDDLEWARE_SECONDS設定。
如果視圖設定自己的緩衝到期時間(即 它有一個最大年齡在頭部資訊的Cache-Control中),那麼頁面將緩衝直到到期,而不是CACHE_MIDDLEWARE_SECONDS。使用django.views.decorators.cache裝飾器,您可以輕鬆地設定視圖的到期時間(使用cache_control裝飾器)或禁用緩衝視圖(使用never_cache裝飾器)。