zoukankan      html  css  js  c++  java
  • drf-通过drf-extensions扩展来实现缓存

    什么情况下使用缓存

    1.不经常更新的数据

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

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

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

    安装

    pip install drf-extensions

    使用方法


    1) 直接添加装饰器

    可以在使用rest_framework_extensions.cache.decorators中的cache_response装饰器来装饰返回数据的类视图的对象方法,如:

    复制代码
    class CityView(views.APIView):
      @cache_response()
      def get(self, request, *args, **kwargs):
        ...
        1
        2
        3
        4
    复制代码

    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的键对应。

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

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

    1) ListCacheResponseMixin

      用于缓存返回列表数据的视图,与ListModelMixin扩展类配合使用,实际是为list方法添加了cache_response装饰器

    2) RetrieveCacheResponseMixin 
      用于缓存返回单一数据的视图,与RetrieveModelMixin扩展类配合使用,实际是为retrieve方法添加了cache_response装饰器

    3) CacheResponseMixin 

      为视图集同时补充List和Retrieve两种缓存,与ListModelMixin和RetrieveModelMixin一起配合使用,也可以与ModelViewSet使用。

    三个扩展类都是在rest_framework_extensions.cache.mixins中。

    参考:
    https://www.cnblogs.com/lvye001/p/10028922.html
  • 相关阅读:
    es6-14 Promise
    微信公众号支付 出现的问题
    RedisDesktopManager 打开报0xc000007b程序错误
    easyui 下对radio的选中操作
    谷歌浏览器(Chrome)禁止浏览器缓存 设置
    oracle 中start with 的用法
    Spring JdbcTemplate 调用存储过程
    Object 转化为String时的一个问题 null->"null"
    android/ios js 启动apk
    nexus2.1.2的配置
  • 原文地址:https://www.cnblogs.com/chuanxi/p/10254764.html
Copyright © 2011-2022 走看看