Задать вопрос

Как передать большой (30мб) json в браузер за раз, чтобы браузер не упал?

Требуется через ajax выгрузить на страницу около 100000 записей общим размером чуть больше 30 мегабайт. Загружать нужно через ОДИН ajax запрос, и уже на странице оперировать всеми этими данными. Проблема в том, что, google chrome, например, при передаче через ajax больше 20 МБ крашится.
Формат одной записи: 10 полей, в каждое либо целое число, либо timestamp, либо небольшой текст (до 50 символов). Менять формат записи не входит в задачу и не представляется возможным.
  • Вопрос задан
  • 728 просмотров
Подписаться 3 Оценить 2 комментария
Решения вопроса 1
nazarpc
@nazarpc
Open Source enthusiast
1) Оптимизировать структуру данных JSON для транспортировки
2) Использовать бинарный формат вместо JSON
3) gzip тоже помогает
4) Грузить в веб-воркере и передавать в основное приложение по загрузке (судя по объему вычисления лучше делать там же)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@maxyc_webber
Web-программист
вам нужно на стороне сервера все манипуляции делать, а клиент только выводит данные. если присутствуют какие то фильтры, то передавать на основе них запросы к серверу, чтобы тот корректно вернул новые данные
Ответ написан
Вижу 2 варианта.
- сжимать и распаковывать на клиенте результат.
- разбить запрос, подтягивая данные непрерывными порциями по 5 мегабайт
Ответ написан
AMar4enko
@AMar4enko
Попробуйте загрузить из вебворкера, без обработки, просто xhr и дождаться окончания приема. Надо понять, где именно он крашится, внутри самого xhr или уже потом. Если второе, то можно поиграть событием получения порции, принудительно разбивая данные на куски.
Также в порядке бреда можно попробовать jsonp или грузить через iframe
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект