Django 緩存設(shè)置

緩存是為了保存那些需要很多計(jì)算資源的結(jié)果,這樣的話就不必在下次重復(fù)消耗計(jì)算資源。 下面我們用偽代碼,來解釋緩存怎樣在動(dòng)態(tài)生成的網(wǎng)頁中工作的:

given a URL, try finding that page in the cache
if the page is in the cache:
    return the cached page
else:
    generate the page
    save the generated page in the cache (for next time)
    return the generated page




1. 設(shè)置緩存

Django 的緩存配置是通過 setting 文件的 CACHES 配置來實(shí)現(xiàn)的。本文僅以數(shù)據(jù)庫緩存為例,其他配置方式請(qǐng)參考官方文檔。

使用數(shù)據(jù)庫緩存前,要在 settings.py 添加如下設(shè)置:

CACHES = {
    'default': {
        # 使用數(shù)據(jù)庫緩存
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        # 用于保存緩存數(shù)據(jù)的表的名字
        'LOCATION': 'my_cache_table',
    }
}

然后運(yùn)行這個(gè)命令來創(chuàng)建緩存表:

python manage.py createcachetable




2. Cache 參數(shù)

  • TIMEOUT:緩存的默認(rèn)過期時(shí)間,以秒為單位, 這個(gè)參數(shù)默認(rèn)是 300 seconds (5 分鐘)。你可以設(shè)置 TIMEOUT 為 None 這樣的話,緩存默認(rèn)永遠(yuǎn)不會(huì)過期;如果把值設(shè)置成 0 緩存會(huì)立即失效(緩存就沒有意義了)。

  • OPTIONS:這個(gè)參數(shù)應(yīng)該被傳到緩存后端。有效的可選項(xiàng)列表根據(jù)緩存的后端不同而不同,由第三方庫所支持的緩存將會(huì)把這些選項(xiàng)直接配置到底層的緩存庫。
    緩存的后端實(shí)現(xiàn)自己的選擇策略 (i.e., the locmem, filesystem and database backends) 將會(huì)履行下面這些選項(xiàng):

    • MAX_ENTRIES:高速緩存允許的最大條目數(shù),超出這個(gè)數(shù)則舊值將被刪除,這個(gè)參數(shù)默認(rèn)是 300。
    • CULL_FREQUENCY:當(dāng)達(dá)到 MAX_ENTRIES 值的時(shí)候,被刪除的條目比率。該比率可以理解為 1/CULL_FREQUENCY,所以設(shè)置 CULL_FREQUENCY 為 2 會(huì)在達(dá)到 MAX_ENTRIES 值時(shí)會(huì)刪去一半的緩存。這個(gè)參數(shù)應(yīng)該是整數(shù),默認(rèn)為 3。把 CULL_FREQUENCY的值設(shè)置為 0 意味著當(dāng)達(dá)到 MAX_ENTRIES 值時(shí),緩存將被清空。
  • KEY_PREFIX:將自動(dòng)包含(默認(rèn)情況下預(yù)置為)Django 服務(wù)器使用的所有緩存鍵的字符串。

  • VERSION:由 Django 服務(wù)器生成的緩存鍵的默認(rèn)版本號(hào)。

  • KEY_FUNCTION 包含函數(shù)的虛線路徑的字符串,定義如何將前綴,版本和鍵組成最終緩存鍵。

在下面這個(gè)例子中,是一個(gè)使用文件系統(tǒng)緩存后端,緩存過期時(shí)間被設(shè)置為 60 秒,最大條目為 1000。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
        'TIMEOUT': 60,
        'OPTIONS': {
            'MAX_ENTRIES': 1000
        }
    }
}

非法的參數(shù)會(huì)被忽略掉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽光小鎮(zhèn)少爺閱讀 3,951評(píng)論 0 8
  • Django 1.8.2 文檔Home | Table of contents | Index | Modules...
    軒轅小愛閱讀 2,424評(píng)論 0 2
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評(píng)論 25 709
  • 讀到余華《活著》這本書的時(shí)候,我正處于人生的焦灼期。人一過三十,不知怎的,心突然慌起來,空落落的,信念像失去重心般...
    8ab1b259aed0閱讀 2,415評(píng)論 0 1

友情鏈接更多精彩內(nèi)容