1. 程式人生 > 實用技巧 >drf-快取相關

drf-快取相關

settings.py檔案的配置

# 快取相關配置
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 指定快取使用的引擎
        'LOCATION': 'D:\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.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', # 最後 位置必須放這裡

]
第一個位置和最後一個位置是必須放正確的,不然會報錯,中間是本來的中介軟體

在檢視檔案views.py檔案中進行快取相關書寫

# 單頁面快取
from django.views.decorators.cache import cache_page


class Person:   #自己書寫這個類,後面都可以例項化,進行資料的儲存和呼叫
    def __init__(self, name, age):
        self.name = name
        self.age = age


from django.core.cache import cache


# @cache_page(5) # 這裡是快取5秒
def test1_cache(request):
    p = Person('egon', 18) # 例項化
    cache.set('name', p)  # 快取的儲存
    import time
    ctime = time.time() # 給頁面快取一個時間而已
    print('xxxxx') # 測試用的 不要也行
    return render(request, 'index.html', context={'ctime': ctime})
        #  render三板斧的格式語句, 給index這個頁面,返回 ctime這個變數:ctime


def test2_cache(request):
    p = cache.get('name')# 獲取快取中的資料
    print(p.name) # 可以在後臺打印出來,後續若是想想用,可以直接呼叫的
    import time
    ctime = time.time()
    return render(request, 'index.html', context={'ctime': ctime})
#  render三板斧的格式語句, 給index這個頁面,返回 ctime這個變數:ctime

配置完檢視後加路由

from app_jwt import views
from django.urls import path, re_path
from rest_framework_jwt.views import obtain_jwt_token

urlpatterns = [


    # 快取
    path('test1/',views.test1_cache),
    path('test2/',views.test2_cache),

]

測試test1進行儲存 ,test2進行獲取

後臺就能看到獲取的快取資料,也就是例項化的使用者名稱

# 前後端分離快取的使用
- 如何使用
from django.core.cache import cache
cache.set('key',value可以是任意資料型別)
cache.get('key')
-應用場景:
-第一次查詢所有圖書,你通過多表聯查序列化之後的資料,直接快取起來
-後續,直接先去快取查,如果有直接返回,沒有,再去連表查,返回之前再快取