django快取
阿新 • • 發佈:2020-07-15
一、快取配置,詳見: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、應用場景:將複雜查詢的結果存於快取,後續再需要時,先去快取中查詢,有則直接取出,沒有再另行查詢並重新存入快取。