Подтвердить что ты не робот

Как сжать JSON с PHP?

Я пишу небольшую страницу анализа, которая поможет мне выслеживать ошибки в приложении. По сути, это позволяет визуально сравнивать фактические данные и записи в журнале, а также выполнять анализ данных.

Поскольку это только для отладки, и поскольку я буду развертывать это на реальном сайте, я хочу, чтобы он имел как можно меньше нагрузки на сервер. Некоторые параметры анализа будут включать в себя довольно тяжелый поиск подстроки или n 2 поэтому я собираюсь разгрузить это для клиента.

Это означает, что страница PHP будет просто извлекать данные из таблиц и журналов, некоторые из них JSON и записывать их. Затем клиент Javascript выполнит весь анализ и т.д.

Проблема заключается в том, что данные JSON будут иметь несколько MB больших, а мое соединение с сервером - медленное. Было бы неплохо сжать данные. У кого-нибудь есть идеи?

Среда - это PHP + Apache; Я не знаю, будет ли установлен mod_gzip; и я не контролирую его.

4b9b3361

Ответ 1

Вы можете сжать данные с помощью управления выводами PHP. Просто поставьте этот вызов в начале вашего script перед любым выходом:

ob_start('ob_gzhandler');

Теперь любой выход будет сжиматься с помощью gzip или deflate, если он будет принят клиентом.

Ответ 2

В PHP 5.4 теперь находится JSON_UNESCAPED_UNICODE, поэтому вы можете заменить char:

\ u00f3 → Ĺ >= Ś

э:

 json_encode($data,JSON_UNESCAPED_UNICODE);

Ответ 3

Если apache - ваш выбор (и это, как указано в исходном вопросе), вы можете добавить некоторые правила в .htaccess:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    # Add any mime-type you think is appropriate here
    AddOutputFilterByType DEFLATE application/json
</IfModule>