針對訪問量大,且數據較固定的接口,建議建立接口緩存,建立了緩存之后,不會再直接去訪問接口了。
比如下面的輪播圖接口,每刷新一下首頁都會訪問一下輪播圖接口,所以我們用接口緩存來處理,減少訪問量。
視圖模塊:home/views.py
from rest_framework.generics import ListAPIView from . import models, serializers from settings.const import BANNER_COUNT # 訪問量大,且數據較固定的接口,建議建立接口緩存 from django.core.cache import cache from rest_framework.response import Response class BannerListAPIView(ListAPIView): queryset = models.Banner.objects.filter(is_delete=False, is_show=True).order_by('-orders')[:BANNER_COUNT] serializer_class = serializers.BannerModelSerializer # 緩存有,走緩存,緩存沒有走數據庫 def list(self, request, *args, **kwargs): #群查 banner_data = cache.get('banner_list') if not banner_data: print('走數據庫') response = super().list(request, *args, **kwargs) banner_data = response.data # 建立緩存,不建議設置緩存過期時間,用celery等框架后台異步更新緩存即可 cache.set('banner_list', banner_data) return Response(banner_data)