1. 程式人生 > 實用技巧 >django快取

django快取

一、快取配置,詳見:https://www.cnblogs.com/liuqingzheng/articles/9803351.html

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 指定快取使用的引擎
        'LOCATION': 'D:\aaa\bbb\',  # 指定快取的路徑,還可以是別的位置,此處以檔案為例
        'TIMEOUT': 300,  # 快取超時時間(預設為300秒,None表示永不過期)
        '
OPTIONS': { 'MAX_ENTRIES': 300, # 最大快取記錄的數量(預設300) 'CULL_FREQUENCY': 3, # 快取到達最大個數之後,剔除快取個數的比例,此處即1/3(預設3) } } }

二、前後端混合開發的情況,不同快取粒度的配置情況

  1、全域性快取,setting.py中:

MIDDLEWARE = [
    # 返回之前,判斷快取否已經存在,若不存在,則通過UpdateCacheMiddleware將快取儲存設定的位置
    'django.middleware.cache.UpdateCacheMiddleware
', ... # 請求經過一系列的中介軟體認證,如果請求的內容已在快取中,則通過FetchFromCacheMiddleware獲取內容並返回給使用者 'django.middleware.cache.FetchFromCacheMiddleware', ] CACHE_MIDDLEWARE_SECONDS = 10 # 設定快取時間

  2、單頁面快取,檢視方法上加裝飾器:

# django.views.decorators.cache.cache_page
@cache_page(5)  # 快取5秒
def test_cache(request):
    #
python內建time模組 ctime = time.time() return render(request, 'index.html', context={'ctime': ctime})

  3、頁面區域性快取:

{% load cache %}
{% cache 5 'name' %}  # 5表示5秒,name是唯一key值
    {{ ctime }}
{% endcache %}

三、前後端分離開發的情況

  1、程式碼:

# django.core.cache.cache
cache.set('key', value可以是任意資料型別)  # 通過<key>存取指定快取資料
# --------------------------------------------
cache.get('key')

  2、應用場景:將複雜查詢的結果存於快取,後續再需要時,先去快取中查詢,有則直接取出,沒有再另行查詢並重新存入快取。