drf 快取簡介 未完
阿新 • • 發佈:2020-07-15
django的快取簡介
動態網站中,使用者的請求需要對資料庫進行操作,對服務端的資源消耗比較大,特別是在聯多個表查詢的時候。為了提高併發量,提高訪問的速度,可以使用快取
快取是將一些常用的資料儲存記憶體或者memcache中,在一定的時間內有人來訪問這些資料時,則不再去執行資料庫及渲染等操作,而是直接從記憶體或memcache的快取中去取得資料,然後返回給使用者。
這裡只做簡單的介紹,提供一些例子。以後做快取會使用extensions,資料會放在redis中
入門使用
前後端混合開發的專案中,Django提供了不同粒度的快取,可以快取某個頁面,可以只快取一個頁面的某個部分,甚至可以快取整個網站
配置快取地址到檔案
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定快取使用的引擎 'LOCATION': 'G:\django_cache', # 指定快取的路徑 'TIMEOUT': 300, # 快取超時時間(預設為300秒,None表示永不過期) 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大快取記錄的數量(預設300) 'CULL_FREQUENCY': 3, # 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3) } } }
全站快取
中介軟體
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
。。。。
'django.middleware.cache.FetchFromCacheMiddleware',
]
# 在setting.py中的中介軟體配置
CACHE_MIDDLEWARE_SECONDS=10 # 全站快取時間
單頁面快取
# 在檢視函式上加裝飾器 from django.views.decorators.cache import cache_page @cache_page(5) # 快取5s鍾 def test_cache(request): import time ctime=time.time() return render(request,'index.html',context={'ctime':ctime})
頁面區域性快取
{% load cache %} 匯入快取
{% cache 5 'name' %} # 5表示5s鍾,name是唯一key值
{{ ctime }}
{% endcache %}
前後端分使用快取
# views.py ...
from django.core.cache import cache
# 匯入快取模組
# 需要存的時候cache.set,需要取的時候cache.get
cache.set('key',value可以是任意資料型別)
cache.get('key')
未完,後續再更新