使用時(shí)機(jī):
經(jīng)常被用戶查詢使用的,而且數(shù)據(jù)基本不變化
1. 安裝
pip install drf-extensions
2. 使用方法
1. 直接添加裝飾器
from rest_framework_extensions.cache.decorators import cache_response
class CityView(views.APIView):
@cache_response()
def get(self, request, *args, **kwargs):
...
# cache_response裝飾器可以接收兩個(gè)參數(shù)
@cache_response(timeout=60*60, cache='default')
- timeout 緩存時(shí)間
- cache 緩存使用的Django緩存后端(即CACHES配置中的鍵名稱)
默認(rèn)配置設(shè)置:
# settings.py
# DRF擴(kuò)展
REST_FRAMEWORK_EXTENSIONS = {
# 緩存時(shí)間
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 緩存存儲(chǔ)
'DEFAULT_USE_CACHE': 'default',
}
注意,cache_response裝飾器既可以裝飾在類視圖中的get方法上僻孝,也可以裝飾在REST framework擴(kuò)展類提供的list或retrieve方法上诱告。使用cache_response裝飾器無需使用method_decorator進(jìn)行轉(zhuǎn)換缔俄。
2. 使用drf-extensions提供的擴(kuò)展類
- ListCacheResponseMixin
用于緩存返回列表數(shù)據(jù)的視圖瘦陈,與ListModelMixin擴(kuò)展類配合使用特纤,實(shí)際是為list方法添加了cache_response裝飾器
- RetrieveCacheResponseMixin
用于緩存返回單一數(shù)據(jù)的視圖秩命,與RetrieveModelMixin擴(kuò)展類配合使用尉共,實(shí)際是為retrieve方法添加了cache_response裝飾器
- CacheResponseMixin
為視圖集同時(shí)補(bǔ)充List和Retrieve兩種緩存褒傅,與ListModelMixin和RetrieveModelMixin一起配合使用。
三個(gè)擴(kuò)展類都是在rest_framework_extensions.cache.mixins中袄友。