Как сделать django быстрее при наличии больших массивов данных?
Я делаю сайт электронной коммерции, используя django restframework.
Однако, я понимаю, что со временем количество отзывов будет больше...
(в отзывах много изображений и текстов)
допустим, 1000 отзывов на товар, Это сделает весь сайт медленным, когда я перейду к
страница подробной информации о продукте или страница списка продуктов...
поскольку я использую react/redux, я делаю запрос и получаю целых 1000 отзывов и
хранить в состоянии redux, я думаю, это занимает много времени...
как предотвратить замедление работы django, когда
родственные наборы данных становятся все больше и больше?
Так как это довольно общий вопрос, и не существует маленького фрагмента кода, который можно добавить, чтобы сделать получение тысяч отзывов одновременно хорошей идеей, я отвечу, как сделать все быстро, в общем.
Профиль и выяснить почему он медленный.
Для этого вы хотите использовать что-то вроде django-debug-toolbar и проверить, сколько времени занимает ваше представление на различные действия, для некоторых представлений это база данных, для некоторых - сериализация JSON или вызовы внешних сервисов. Но шаг 1 всегда заключается в том, чтобы понять, почему представление работает медленно.
Собирайте низко висящие плоды
Некоторые вещи легко пропустить и легко исправить, например, убедитесь, что вы всегда используете prefetch_related и select_related всякий раз, когда вы используете отношения / foreignkeys Django. Добавьте индексы базы данных для более быстрого поиска. Используйте aggregations и values / values_list для выбора только того, что вам нужно.
Выбирайте только то, что вам нужно.
С помощью пагинации и фильтрации вы должны ограничить данные, отправляемые браузеру/клиенту, только тем, что ему нужно. В вашем примере - переделайте пользовательский интерфейс так, чтобы он показывал только 10 лучших отзывов и позволял читателю нажать кнопку, чтобы просмотреть больше.
Кэшируйте представления, которые медленно отображаются, но редко изменяются.
Кэширование - это обоюдоострый меч - оно делает вещи быстрыми, но и более сложными. Этому нужно учиться, так как в коде можно оптимизировать лишь очень многое, а некоторые представления просто естественно медленнее. Существуют расширения , которые облегчают эту работу.