#django #reactjs #graphql
#django #reactjs #graphql
Вопрос:
Я сталкиваюсь с концептуальным конфликтом относительно того, следует ли мне сортировать и фильтровать во внешнем интерфейсе или бэкэнде.
Некоторые предположили, что логика должна быть в бэкэнде и ограниченном количестве данных, т.Е.) клиенту следует предоставлять 10-100 результатов за раз, если у вас есть миллионы наборов данных, чтобы сократить время загрузки страницы. Что меня смущает, так это то, что, если одновременно сортируется и фильтруется много клиентов (т. Е. 100 пользователей) Если это так, то вам приходится постоянно сортировать и фильтровать миллионы записей 100 раз, что, я думаю, замедлит работу сервера.
Если я предполагаю, что мой набор данных составляет около 10000 — 100000, и у меня 10-50 пользователей, одновременно использующих приложение, и если начальная временная загрузка не имеет значения так сильно, как если бы это было приложение частного предприятия, т. Е. ERP, где должна работать логика фильтрации и сортировки?
Ответ №1:
На ваш вопрос нет единственно правильного ответа, ниже приведены плюсы и минусы вашего вопроса.
Сортировка на стороне сервера:
-
Накладные расходы сервера на сортировку данных.
-
Меньше передачи данных для пользователя, поскольку вы уже отправляете отфильтрованные данные.
- Пользовательский интерфейс может быть плохим, если сортировка занимает много времени, пользователь будет ждать с пустым экраном.
Сортировка на стороне пользователя:
-
Увеличенное использование сети как для сервера, так и для пользователя, следовательно, длительный процесс для сервера.
-
Может немного улучшить пользовательский интерфейс, это может увеличить общее время загрузки страницы, но у пользователя будут некоторые данные на его экране.
Лучше всего было бы использовать лучшее из обоих миров, а не придерживаться одного.
Вы можете использовать кэширование на уровне сервера, что может повысить производительность вашего приложения.
Комментарии:
1. Как бы вы использовали лучшее из обоих миров? Не могли бы вы привести мне пример?
2. Хранение часто запрашиваемых данных в отсортированном виде, если набор данных очень мал, затем обработайте его на стороне потребителя.