Django中的CACHE_BACKEND參數和網站級Cache設定

來源:互聯網
上載者:User
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裝飾器)。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.