Django Rest API Cache с помощью Radis и поиск предложений
Проблема
У меня есть бэкенд с Django (Wagtail CMS) и фронтенд с react. Я использую их в качестве новостного сайта. Я новичок в Django, а мой коллега по команде управляет фронтендом. Я предоставляю им стандартный API Wagtail с некоторой настройкой (я раскрыл все необходимые поля в BaseAPIView
). В моем API в первый раз было 25 записей в блоге, а теперь их 60. В первый раз время загрузки API было 1,02 секунды, а теперь время загрузки API составляет 1,69 секунды. Я боюсь, что произойдет, когда количество постов достигнет 5000+! Потому что я ничего не ограничиваю в API.
План
Я планирую использовать radis
кэш для API. Но я не могу понять, что я должен установить в представлениях API! потому что мое представление API следующее.
#api.py
from wagtail.api.v2.views import PagesAPIViewSet,BaseAPIViewSet
api_router = WagtailAPIRouter('wagtailapi')
class ProdPagesAPIViewSet(BaseAPIViewSet):
renderer_classes = [JSONRenderer]
filter_backends = [FieldsFilter,
ChildOfFilter,
AncestorOfFilter,
DescendantOfFilter,
OrderingFilter,
TranslationOfFilter,
LocaleFilter,
SearchFilter,]
meta_fields = ["type","seo_title","search_description","first_published_at"]
body_fields = ["id","type","seo_title","search_description","first_published_at","title"]
listing_default_fields = ["type","seo_title","search_description","first_published_at","id","title","alternative_title","news_slug","blog_image","video_thumbnail","categories","blog_authors","excerpt","content","content2","tags","story_type"]
nested_default_fields = []
def get_queryset(self):
return super().get_queryset().filter(story_type='Story').order_by('-first_published_at')
name = "stories"
model = AddStory
api_router.register_endpoint("stories", ProdPagesAPIViewSet)
Решит ли добавление кэша radis в API проблему загрузки или мне следует добавить кэш в front end?
Я пытался добавить пагинацию в API. У меня ничего не получилось, но если я смогу добавить пагинацию, будет ли это лучше?
Поиск вопросов
Что будет лучше для меня добавление radis cache или добавление пагинации? Если в моем вопросе есть проблемы, пожалуйста, не голосуйте, а лучше прокомментируйте, что я упустил и как мне лучше спросить! Спасибо.