PHP: запрос 50 МБ-100 МБ json - сбой браузера / не отображаются результаты - PullRequest
0 голосов
/ 07 марта 2019

Огромные запросы к серверу json: около 50–100 МБ, например.

Из того, что я знаю, это может привести к сбою при загрузке огромных запросов данных в таблицу (я обычно использую таблицы данных), результат: память достигает почти 8 ГБ, и происходит сбой браузера.Chrome может не вернуть результат, Firefox обычно спрашивает, хочу ли я подождать или убить процесс.

Я собираюсь начать работу над проектом, который будет отправлять запросы на огромные jsons, все сжатые (выполняемые PHP на стороне сервера).Цель моего отчета - получить данные и отобразить их в виде таблицы - их легко фильтровать и упорядочивать.Так что я не могу найти использование «ленивой загрузки» для этого конкретного случая.

В этот раз я мог бы использовать библиотеку данных vue-js (не знаю, какая именно).

  • Что именно использует так много моей памяти?Я точно знаю, что результат json получен.Это рендеринг / разбор json в DOM?(Я имею в виду пример с датами на данный момент: https://datatables.net/examples/data_sources/ajax)

  • Какова лучшая практика в подобных ситуациях? Я начал исследовать эту проблему и заметил, что есть сообщения от 2010 года, которые кажутсякак будто они вообще не актуальны.

1 Ответ

1 голос
/ 07 марта 2019

Нет ограничений на размер ответа HTTP. Существует ограничение на другие вещи, такие как:

  • локальное хранилище
  • хранилище сессии
  • кэш
  • печенье
  • длина строки запроса
  • память (в зависимости от ограничений вашего процессора или выделения браузера)

Вместо этого, проблема скорее всего в том, что вы реализовали свои данные. Вы не можете просто вставить 100 000 узлов в DOM и не ожидать какого-либо влияния на производительность. Кроме того, если таблица данных выполняет логику для каждого из этих элементов, когда они входят и обрабатывают их до вставки узла, это также будет большим нет, нет.

То, что вы здесь сделали, - это, по сути, перекладывает работу по нумерации страниц с сервера на клиента и с тяжелыми последствиями.

Если вам необходимо вернуть такой большой ответ, рассмотрите возможность использования одного из вариантов хранения, предоставляемых браузерами (несколько из упомянутых выше). Затем выполните разбиение на страницы сохраненного ответа JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...