使用方法:
1、直接添加装饰器@cache_response
该装饰器装饰的方法有两个要求:

  • 它必须是继承了rest_framework.views.APIView的类的方法
  • 它必须返回rest_framework.response.Response 的实例

例子:

from rest_framework.response import Response
from rest_framework import views
from rest_framework_extensions.cache.decorators import (
cache_response
)
from myapp.models import City class CityView(views.APIView):
@cache_response()
def get(self, request, *args, **kwargs):
# values_list()从查询集中只返回指定的字段
cities = City.objects.all().values_list('name', flat=True)
return Response(cities)

如果您第一次请求视图,您将从SQL查询中获得它,(~60ms response time):

# Request
GET /cities/ HTTP/1.1
Accept: application/json # Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8 ['Moscow', 'London', 'Paris']

第二次请求将击中缓存。没有sql计算,没有数据库查询,(~30 ms response time):

# Request
GET /cities/ HTTP/1.1
Accept: application/json # Response
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8 ['Moscow', 'London', 'Paris']

总结:减少响应时间取决于API方法内部的计算复杂性。

cache_response装饰器可以接收两个参数:

@cache_response(timeout=60*60, cache='default')
  • timeout 缓存时间
  • cache 缓存使用的Django缓存后端(即CACHES配置中的键名称)

如果在使用cache_response装饰器时未指明timeout或者cache参数,则会使用配置文件中的默认配置,可以通过如下方法指明:

# DRF扩展
REST_FRAMEWORK_EXTENSIONS = {
# 缓存时间
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 缓存存储
'DEFAULT_USE_CACHE': 'default',
}
  • DEFAULT_CACHE_RESPONSE_TIMEOUT 缓存有效期,单位秒
  • DEFAULT_USE_CACHE 缓存的存储方式,与配置文件中的CACHES的键对应。

注意,cache_response装饰器既可以装饰在类视图中的get方法上,也可以装饰在REST framework扩展类提供的list或retrieve方法上。使用cache_response装饰器无需使用method_decorator进行转换

2、

最新文章

  1. noip复习模板
  2. 【C语言入门教程】4.4 指针 与 指针变量
  3. 1063. Set Similarity (25)
  4. 使用ImageCreate()创建一个代表空白图像的变量
  5. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器
  6. Redis info参数总结(转)
  7. Entity Framework做IN查询
  8. SecurityManager一:理解AccessController.doPrivileged()
  9. Base Pattern基本模式_Gateway入口
  10. java 非法字符过滤 , 半角/全角替换
  11. 【Android】 Sqlite3 not found
  12. Drainage Ditches - poj 1273(网络流模板)
  13. 离robots.txt启动网络爬虫之旅
  14. iOS 图片旋转方法
  15. 线程UI同步
  16. JavaScript 系统知识点图库
  17. Linux shell if判断语句
  18. Linux 查看网络状态工具
  19. Notes on Operating System
  20. Python全栈之路----函数----局部变量

热门文章

  1. 单身狗福利!利用java实现每天给对象发情话,脱单指日可待!
  2. python lambda表达式应用
  3. C#——时间之不同国家的显示格式
  4. [leetcode]669. Trim a Binary Search Tree寻找范围内的二叉搜索树
  5. 当layui与分页相遇--bootstrap何去何从
  6. Java学习日报7.25
  7. java线程,进程,多线程
  8. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结
  9. JavaScript DOM编程艺术(第2版)的简单总结
  10. Maven+Spring 框架,ModelAndView在页面取值不成功