pip install drf-extensions
from rest_framework_extensions.cache.mixins import CacheResponseMixin
# CacheResponseMixin必定要放在第一個位置 class GoodsListViewSet(CacheResponseMixin,mixins.ListModelMixin, mixins.RetrieveModelMixin,viewsets.GenericViewSet):
# 緩存配置 REST_FRAMEWORK_EXTENSIONS = { 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 5 # 5s過時,時間本身能夠隨便設定 }
注:這個緩存使用的是內存,每次重啓以後就會失效redis
pip install django-redis
# settings.py # redis緩存 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
爲了防止爬蟲對服務器形成的重大壓力,對數據進行訪問速率限制就顯得很是的重要了
官網使用說明:http://www.django-rest-framework.org/api-guide/throttling/
# settings.py REST_FRAMEWORK = { #限速設置 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRateThrottle', # 未登錄用戶 'rest_framework.throttling.UserRateThrottle' # 登錄用戶 ), 'DEFAULT_THROTTLE_RATES': { 'anon': '3/minute', # 每分鐘能夠請求兩次 'user': '5/minute' # 每分鐘能夠請求五次 } }
from rest_framework.throttling import UserRateThrottle,AnonRateThrottle class GoodsListViewSet(CacheResponseMixin,mixins.ListModelMixin, mixins.RetrieveModelMixin,viewsets.GenericViewSet): . . throttle_classes = (UserRateThrottle, AnonRateThrottle)