Django REST framework 快取技術
Django REST framework 快取技術
對於經常被使用者查詢使用的,而且資料基本不變化的資料,我們可以使用快取處理,減少資料庫的查詢次數。
在Django REST framework中使用快取,可以通過drf-extensions擴充套件來實現。
安裝
pip install drf-extensions
使用方法
1、直接新增裝飾器
使用rest_framework_extensions.cache.decorators中的cache_response裝飾器來裝飾返回資料的類檢視的物件方法,如:
class CityView(APIView): @cache_response() def get(self, request, *args, **kwargs): ...
cache_response裝飾器可以接收兩個引數:
- timeout 快取時間
- cache 快取使用的Django快取後端(即CACHES配置中的鍵名稱)
方式一:區域性使用:
@cache_response(timeout=60*60, cache=‘default’)
方式二:全域性配置
REST_FRAMEWORK_EXTENSIONS = { # DRF擴充套件
‘DEFAULT_CACHE_RESPONSE_TIMEOUT’: 60 * 60, # 快取時間
‘DEFAULT_USE_CACHE’: ‘default’, # 快取儲存
}
cache_response裝飾器中就無需再新增引數了
2、使用drf-extensions提供的擴充套件類
drf-extensions擴充套件對於快取提供了三個擴充套件類:
三個擴充套件類都是在rest_framework_extensions.cache.mixins中。
- ListCacheResponseMixin
用於快取返回列表資料的檢視,與ListModelMixin擴充套件類配合使用,實際是為list方法添加了cache_response裝飾器
- RetrieveCacheResponseMixin
用於快取返回單一資料的檢視,與RetrieveModelMixin擴充套件類配合使用,實際是為retrieve方法添加了cache_response裝飾器
- CacheResponseMixin
為檢視集同時補充List和Retrieve兩種快取,與ListModelMixin和RetrieveModelMixin一起配合使用
使用方式
class CityView(CacheResponseMixin,APIView):
def get(self, request, *args, **kwargs):
...