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):
...