Django 緩存設置

緩存是為了保存那些需要很多計算資源的結果,這樣的話就不必在下次重復消耗計算資源。 下面我們用偽代碼,來解釋緩存怎樣在動態生成的網頁中工作的:

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. 設置緩存

Django 的緩存配置是通過 setting 文件的 CACHES 配置來實現的。本文僅以數據庫緩存為例,其他配置方式請參考官方文檔

使用數據庫緩存前,要在 settings.py 添加如下設置:

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

然后運行這個命令來創建緩存表:

python manage.py createcachetable




2. Cache 參數

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

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

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

  • VERSION:由 Django 服務器生成的緩存鍵的默認版本號。

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

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

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

非法的參數會被忽略掉。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容