@Paul14

Как оптимизировать процесс загрузки большего объема данных?

С базы данных получаю большой объем данных статистики. Потом работаю с ними в реакте, выводя графики продаж, отгрузок и прочее. Средний ответ сервера на запрос 3сек, данные получаю около 7-8 секунд. Нужно уменьшить это время. Это задача.

Какие решения вижу:
1) Сохранить все файлы в какое-то локальное хранилище и загружать их соответственно потом без запроса на сервер.
- Local Storage не походит по размеру хранилища
- Сохранять данные на сервер в текстовый файл не пробывал, но помоему шило на мыло
2) Выполнять все статистические операции на сервере. Но это просто одуреть как неудобно.
... больше мыслей нет

Скажите пожалуйста, какое лучшее решение для этой задачи?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 3
dima9595
@dima9595
Junior PHP
Для начала необходимо понять по какой причине ответ от сервера около 3 секунд.
Тут может быть проблема в настройках, слабом сервере или ещё чего из большого списка возможностей.

Далее нужно понять почему данные вы получаете 7-8 секунд.
Тут может быть как первая причина, так и просто неоптимизированный, кривой код. Опять же, разбираемся!

В любом случае нужно всю логику пихать в сервер, а клиенту отдавать уже готовые данные для отображения. Клиент не должен страдать из-за больших данных, тем более владельцы мобильных телефонов. Для них это будет ужс и они уйдут из вашего продукта.
PS: Я бы и сам не стал ждать такой долгой загрузки.

UPD:
Банальный пример из практики. У нас в проекте был очень старый код, который написан был лет 5 назад. Новички думали что просто сервер слабый. Но покопавшись в коде стало ясно, что код крайне неоптимизированный и мы его оптимизировали.
Раньше загружалось более 60 секунд (как правило уходил в таймаут. т.е. вообще не загружались при малом количестве фильтров по данным)
Стало: около 10-20 секунд.
И это те же данные...
Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Провести диагностику и анализ того, какие именно данные запрашиваются, откуда, каким образом и как они попадают туда, где они нужны. Т.е., исследовать путь данных и механизм их получения. Далее изучить на каком этапе происходит задержка или задержки и уже от этого момента проектировать решение. В общем случае можно сделать следующее:
  • оптимизировать запрос для получения данных
  • оптимизировать формат передачи данных
  • добавить сжатие данных
  • сделать кэширование, возможно даже в несколько уровней
  • обновить железо сервера на более мощное
  • оптимизировать или сменить БД на более подходящую для задачи
  • часть или все вычисления производить на сервере и выдавать готовый результат в нужном виде
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Потом работаю с ними в реакте, выводя графики продаж, отгрузок и прочее.
Так, а это вот все в одну кучу нужно, или для каждого графика нужно свой набор данных? Не проще каждый график строить по отдельному запросу? Таким образом во первых вы разделите потоки, уменьшите данные на один запрос, и практически аннигилируете нагрузку на фронт.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Вот:
https://github.com/localForage/localForage
Можно хранить в браузере файлы и данные любого объема.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект