Django中的CACHE_BACKEND參數(shù)和站點級Cache設置
CACHE_BACKEND參數(shù)
每個緩存后端都可能使用參數(shù)。 它們在CACHE_BACKEND設置中以查詢字符串形式給出。 有效參數(shù)如下:
- timeout:用于緩存的過期時間,以秒為單位。 這個參數(shù)默認被設置為300秒(五分鐘)。
- max_entries:對于內(nèi)存,文件系統(tǒng)和數(shù)據(jù)庫后端,高速緩存允許的最大條目數(shù),超出這個數(shù)則舊值將被刪除。 這個參數(shù)默認是300。
- cull_percentage :當達到 max_entries 的時候,被刪除的條目比率。 實際的比率是 1/cull_percentage ,所以設置cull_frequency=2就是在達到 max_entries 的時候去除一半數(shù)量的緩存。
把 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"
其中,非法的參數(shù)與非法的參數(shù)值都將被忽略。
站點級 Cache
一旦高速緩存設置,最簡單的方法是使用緩存緩存整個網(wǎng)站。 您 需要添加'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中間件,必須放在最后。 細節(jié)有點費解,如果您想了解完整內(nèi)幕請參看下面的MIDDLEWARE_CLASSES順序。
然后,在你的Django settings文件里加入下面所需的設置:
- CACHE_MIDDLEWARE_SECONDS :每個頁面應該被緩存的秒數(shù)。
- CACHE_MIDDLEWARE_KEY_PREFIX :如果緩存被多個使用相同Django安裝的網(wǎng)站所共享,那么把這個值設成當前網(wǎng)站名,或其他能代表這個Django實例的唯一字符串,以避免key發(fā)生沖突。 如果你不在意的話可以設成空字符串。
緩存中間件緩存每個沒有GET或者POST參數(shù)的頁面。 或者,如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY設置為True,只有匿名請求(即不是由登錄的用戶)將被緩存。 如果想取消用戶相關(guān)頁面(user-specific pages)的緩存,例如Djangos 的管理界面,這是一種既簡單又有效的方法。 CACHE_MIDDLEWARE_ANONYMOUS_ONLY,你應該確保你已經(jīng)啟動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裝飾器)。
相關(guān)文章
python實現(xiàn)旋轉(zhuǎn)和水平翻轉(zhuǎn)的方法
今天小編就為大家分享一篇python實現(xiàn)旋轉(zhuǎn)和水平翻轉(zhuǎn)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python自動創(chuàng)建Markdown表格使用實例探究
Markdown表格是文檔中整理和展示數(shù)據(jù)的重要方式之一,然而,手動編寫大型表格可能會費時且容易出錯,本文將介紹如何使用Python自動創(chuàng)建Markdown表格,通過示例代碼詳細展示各種場景下的創(chuàng)建方法,提高表格生成的效率2024-01-01matplotlib bar()實現(xiàn)百分比堆積柱狀圖
這篇文章主要介紹了matplotlib bar()實現(xiàn)百分比堆積柱狀圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02詳解Django中CBV(Class Base Views)模型源碼分析
這篇文章主要介紹了詳解Django中CBV(Class Base Views)模型源碼分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02