Как сделать 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 лучших отзывов и позволял читателю нажать кнопку, чтобы просмотреть больше.

Кэшируйте представления, которые медленно отображаются, но редко изменяются.

Кэширование - это обоюдоострый меч - оно делает вещи быстрыми, но и более сложными. Этому нужно учиться, так как в коде можно оптимизировать лишь очень многое, а некоторые представления просто естественно медленнее. Существуют расширения , которые облегчают эту работу.

Вернуться на верх