1. 程式人生 > 實用技巧 >drf 快取簡介 未完

drf 快取簡介 未完

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')

未完,後續再更新