1. 程式人生 > >Django REST framework 快取技術

Django REST framework 快取技術

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