zoukankan      html  css  js  c++  java
  • django Rest Framework---缓存通过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中。

  • 相关阅读:
    C 语言指针小结
    NOIP2012 复赛考生须知!
    2012 NOIP 初赛复习指导
    16元的纸币
    记一次社会化的钓鱼攻击
    福州大学ACM代表队获36届ACMICPC全球总决赛第18名
    福州教育相关教育资源介绍
    世界末日:科普很重要啊~~~
    201212信息学奥林匹克竞赛,新生招募
    模拟人脑:这个事儿,闹大了
  • 原文地址:https://www.cnblogs.com/lvye001/p/10028922.html
Copyright © 2011-2022 走看看