什么情况下使用缓存

1.不经常更新的数据

2.用户经常访问的一些页面,比如商品列表页、商品详情页等

3.用户经常修改的一些操作:购物车、订单中心等

关于DRF缓存扩展可以参考文档:http://chibisov.github.io/drf-extensions/docs/#caching

安装

pip install drf-extensions

使用方法

1.使用装饰器进行特定缓存

可以使用@cache_response对视图类的方法进行特定缓存

class CityView(views.APIView):
@cache_response(60 * 15,cache ='special_cache')
def get(self,request,* args,** kwargs):
...

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

  1. timeout:缓存时间
  2. cache:缓存配置。默认是django的缓存,使用memcache

如果不提供参数的话,也可以在settings中配置公共的缓存配置:

# DRF扩展
REST_FRAMEWORK_EXTENSIONS = {
# 缓存时间
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 缓存存储
'DEFAULT_USE_CACHE': 'default',
}

2.使用drf-extensions提供的扩展类

drf-extensions扩展对于缓存提供了三个扩展类:

  • ListCacheResponseMixin : 提供了缓存返回列表数据的视图,本质是为 mixins.ListModelMixin 的list()添加了cache_response装饰器; get/。
  • RetrieveCacheResponseMixin:用于返回单一数据的是图,本质是为 mixins.RetrieveModelMixin 添加了cache_response装饰器;get/1/。
  • CacheResponseMixin:提供了List和Retrieve两种缓存,与ListModelMixin和RetrieveModelMixin一起配合使用。
from rest_framework_extensions.cache.mixins import CacheResponseMixin

class UserViewSet(CacheResponseMixin,viewsets.ModelViewSet):
serializer_class = UserSerializer
....

将缓存保存在redis中

django默认的缓存是memcache,memcache将缓存放在内存中,不支持持久化,意味着我们重启之后,缓存就丢失了。

drf-extensions默认使用的是django的缓存配置。我们还可以将缓存保存到redis中。

安装django-redis

pip install django-redis

简体中文版django-redis文档:http://django-redis-chs.readthedocs.io/zh_CN/latest/

作为 cache backend 使用配置

CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100} # 配置连接池
}
}
}

django Rest Framework---缓存通过drf-extensions扩展来实现的更多相关文章

  1. Django Rest Framework源码剖析(一)-----认证

    一.简介 Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包. 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网 ...

  2. Django REST Framework简单入门(一)

    Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包. REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的. ...

  3. django: django rest framework 分页

    django: django rest framework 分页 2018年06月22日 13:41:43 linux_player_c 阅读数:665更多 所属专栏: django 实战   版权声 ...

  4. 快用Django REST framework写写API吧

    Django默认是前后端绑定的,提供了Template和Form,现在流行前后端分离项目,Python大佬坐不住了,于是便有了Django REST framework:https://github. ...

  5. DRF框架(django rest framework)

    1,DRF框架? Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具.通常简称为DRF框架 或 REST framework. Django REST ...

  6. Django 学习之Django Rest Framework(DRF)

    一. WEB应用模式 在开发Web应用中,有两种应用模式 1. 前后端不分离 把html模板文件和django的模板语法结合渲染完成以后才从服务器返回给客户. 2. 前后端分离 二. API接口 AP ...

  7. day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能

    目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...

  8. DRF(Django REST Framework)框架

    目录 一.DRF中的Request 二.前戏: 关于面向对象的继承 三.初级版本 1. settings.py文件 -- 注册app 2. models.py文件 -- 创建表 3. admin.py ...

  9. Django REST framework(DRF)

    Django REST framework(DRF) FBV与CBV CBV源码分析 Restful接口规范 DRF简单配置使用和源码解析 DRF序列化器 DRF10大接口 DRF视图集 三大组件 j ...

  10. DRF Django REST framework APIView(一)

    什么是REST? REST是一个标准,一种规范,遵循REST风格可以使开发的接口通用,便于调用者理解接口的作用. 使url更容易理解,让增删改清晰易懂,在前后端分离开发中按照这一规范能加快开发效率,减 ...

随机推荐

  1. 基于python的机器学习实现日元币对人民币汇率预测

    ## 导入所需的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow a ...

  2. nodeJs上传附件

    两种方案: 这两种方案传参还是有区别额 在nodeJs中上传附件调用了 multer 的中间件,采用这个中间件来上传 首先是表单(前端部分): <!DOCTYPE html> <ht ...

  3. 蜗牛慢慢爬 LeetCode 16. 3Sum Closest [Difficulty: Medium]

    题目 Given an array S of n integers, find three integers in S such that the sum is closest to a given ...

  4. php排序学习之-冒泡排序

    原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面.   (以下都是升序排列,即从小到大排列) 举例说明: $arr = array(6, 3, 8, 2, 9, 1); $a ...

  5. [转帖] Linux运维基础知识学习内容

    原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell pyt ...

  6. Jira 的 数据库备份恢复 简单过程

    1 发现jira的备份恢复很简单, 只需要导入导出一个zip包即可 导出 选择系统 管理员入口登录 选择导入导出 进行备份系统数据 选择一个文件名就能备份 备份结果 将文件copy到上一一级目录的 i ...

  7. Mysql 间隙锁原理,以及Repeatable Read隔离级别下可以防止幻读原理(百度)

    Mysql知识实在太丰富了,前几天百度的面试官问我MySql在Repeatable Read下面是否会有幻读出现,我说按照事务的特性当然会有, 但是面试官却说 Mysql 在Repeatable Re ...

  8. html5 & input & accept attribute

    html5 & input & accept attribute html input accept attribute https://www.w3schools.com/TAGS/ ...

  9. delphi clientdataset判断某一行值是否存在

    ClientDataSet的数据查找.我所介绍的心得和技巧都是用ClientDataSet来做范例,也可以应用于其他的一些DataSet.废话就不多说了.我们还是先看代码,让后再总结.1.Scanni ...

  10. CodeForces - 707C

    C. Pythagorean Triples time limit per test 1 second memory limit per test 256 megabytes input standa ...