使用時機:
經常被用戶查詢使用的,而且數據基本不變化
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裝飾器可以接收兩個參數
@cache_response(timeout=60*60, cache='default')
- timeout 緩存時間
- cache 緩存使用的Django緩存后端(即CACHES配置中的鍵名稱)
默認配置設置:
# settings.py
# DRF擴展
REST_FRAMEWORK_EXTENSIONS = {
# 緩存時間
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 緩存存儲
'DEFAULT_USE_CACHE': 'default',
}
注意,cache_response裝飾器既可以裝飾在類視圖中的get方法上,也可以裝飾在REST framework擴展類提供的list或retrieve方法上。使用cache_response裝飾器無需使用method_decorator進行轉換。
2. 使用drf-extensions提供的擴展類
- ListCacheResponseMixin
用于緩存返回列表數據的視圖,與ListModelMixin擴展類配合使用,實際是為list方法添加了cache_response裝飾器
- RetrieveCacheResponseMixin
用于緩存返回單一數據的視圖,與RetrieveModelMixin擴展類配合使用,實際是為retrieve方法添加了cache_response裝飾器
- CacheResponseMixin
為視圖集同時補充List和Retrieve兩種緩存,與ListModelMixin和RetrieveModelMixin一起配合使用。
三個擴展類都是在rest_framework_extensions.cache.mixins中。