Django中的CACHE_BACKEND參數(shù)和站點(diǎn)級(jí)Cache設(shè)置
CACHE_BACKEND參數(shù)
每個(gè)緩存后端都可能使用參數(shù)。 它們?cè)贑ACHE_BACKEND設(shè)置中以查詢字符串形式給出。 有效參數(shù)如下:
- timeout:用于緩存的過(guò)期時(shí)間,以秒為單位。 這個(gè)參數(shù)默認(rèn)被設(shè)置為300秒(五分鐘)。
- max_entries:對(duì)于內(nèi)存,文件系統(tǒng)和數(shù)據(jù)庫(kù)后端,高速緩存允許的最大條目數(shù),超出這個(gè)數(shù)則舊值將被刪除。 這個(gè)參數(shù)默認(rèn)是300。
- cull_percentage :當(dāng)達(dá)到 max_entries 的時(shí)候,被刪除的條目比率。 實(shí)際的比率是 1/cull_percentage ,所以設(shè)置cull_frequency=2就是在達(dá)到 max_entries 的時(shí)候去除一半數(shù)量的緩存。
把 cull_frequency 的值設(shè)置為 0 意味著當(dāng)達(dá)到 max_entries 時(shí),緩存將被清空。 這將以很多緩存丟失為代價(jià),大大提高接受訪問(wèn)的速度。
在這個(gè)例子中, timeout 被設(shè)成 60
CACHE_BACKEND = "memcached://127.0.0.1:11211/?timeout=60"
而在這個(gè)例子中, timeout 設(shè)為 30 而 max_entries 為 400 :
CACHE_BACKEND = "locmem:///?timeout=30&max_entries=400"
其中,非法的參數(shù)與非法的參數(shù)值都將被忽略。
站點(diǎn)級(jí) Cache
一旦高速緩存設(shè)置,最簡(jiǎn)單的方法是使用緩存緩存整個(gè)網(wǎng)站。 您 需要添加'django.middleware.cache.UpdateCacheMiddleware'和 ‘django.middleware.cache.FetchFromCacheMiddleware'到您的MIDDLEWARE_CLASSES設(shè)置中,在這個(gè)例子中是:
MIDDLEWARE_CLASSES = ( 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', )
注意:
不,這里并沒(méi)有排版錯(cuò)誤: 修改的中間件,必須放在列表的開(kāi)始位置,而fectch中間件,必須放在最后。 細(xì)節(jié)有點(diǎn)費(fèi)解,如果您想了解完整內(nèi)幕請(qǐng)參看下面的MIDDLEWARE_CLASSES順序。
然后,在你的Django settings文件里加入下面所需的設(shè)置:
- CACHE_MIDDLEWARE_SECONDS :每個(gè)頁(yè)面應(yīng)該被緩存的秒數(shù)。
- CACHE_MIDDLEWARE_KEY_PREFIX :如果緩存被多個(gè)使用相同Django安裝的網(wǎng)站所共享,那么把這個(gè)值設(shè)成當(dāng)前網(wǎng)站名,或其他能代表這個(gè)Django實(shí)例的唯一字符串,以避免key發(fā)生沖突。 如果你不在意的話可以設(shè)成空字符串。
緩存中間件緩存每個(gè)沒(méi)有GET或者POST參數(shù)的頁(yè)面。 或者,如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY設(shè)置為T(mén)rue,只有匿名請(qǐng)求(即不是由登錄的用戶)將被緩存。 如果想取消用戶相關(guān)頁(yè)面(user-specific pages)的緩存,例如Djangos 的管理界面,這是一種既簡(jiǎn)單又有效的方法。 CACHE_MIDDLEWARE_ANONYMOUS_ONLY,你應(yīng)該確保你已經(jīng)啟動(dòng)AuthenticationMiddleware。
此外,緩存中間件為每個(gè)HttpResponse自動(dòng)設(shè)置了幾個(gè)頭部信息:
- 當(dāng)一個(gè)新(沒(méi)緩存的)版本的頁(yè)面被請(qǐng)求時(shí)設(shè)置Last-Modified頭部為當(dāng)前日期/時(shí)間。
- 設(shè)置Expires頭部為當(dāng)前日期/時(shí)間加上定義的CACHE_MIDDLEWARE_SECONDS。
- 設(shè)置Cache-Control頭部來(lái)給頁(yè)面一個(gè)最長(zhǎng)的有效期,值來(lái)自于CACHE_MIDDLEWARE_SECONDS設(shè)置。
如果視圖設(shè)置自己的緩存到期時(shí)間(即 它有一個(gè)最大年齡在頭部信息的Cache-Control中),那么頁(yè)面將緩存直到過(guò)期,而不是CACHE_MIDDLEWARE_SECONDS。使用django.views.decorators.cache裝飾器,您可以輕松地設(shè)置視圖的到期時(shí)間(使用cache_control裝飾器)或禁用緩存視圖(使用never_cache裝飾器)。
相關(guān)文章
Python?ArcPy實(shí)現(xiàn)批量對(duì)大量遙感影像相減做差
這篇文章主要為大家介紹了如何基于Python中ArcPy模塊實(shí)現(xiàn)對(duì)大量柵格遙感影像文件批量進(jìn)行相減做差,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-06-06
Python3 入門(mén)教程 簡(jiǎn)單但比較不錯(cuò)
Python已經(jīng)是3.1版本了,與時(shí)俱進(jìn)更新教程.2.5或2.6請(qǐng)看上一篇文章。2009-11-11
python編輯用戶登入界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了python編輯用戶登入界面的實(shí)現(xiàn)代碼,非常不錯(cuò),代碼簡(jiǎn)單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
在Python的Django框架中調(diào)用方法和處理無(wú)效變量
這篇文章主要介紹了在Python的Django框架中調(diào)用方法和處理無(wú)效變量的方法,是Django編程中的基礎(chǔ)操作,需要的朋友可以參考下2015-07-07
Python Pytorch gpu 分析環(huán)境配置
Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個(gè)電腦上裝個(gè)Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下2023-04-04
解決keras+flask模型的重復(fù)調(diào)用出錯(cuò)ValueError: Tensor is n
這篇文章主要介紹了解決keras+flask模型的重復(fù)調(diào)用出錯(cuò)ValueError: Tensor is not an element of this graph問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

