Как сжать JSON с PHP? - PullRequest
       21

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

16 голосов
/ 10 января 2010

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

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

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

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

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

Ответы [ 3 ]

46 голосов
/ 10 января 2010

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

ob_start('ob_gzhandler');

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

3 голосов
/ 27 февраля 2012

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

\ u00f3 -> Ĺ ›= Ś

экв:

 json_encode($data,JSON_UNESCAPED_UNICODE);
1 голос
/ 23 сентября 2016

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

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html
    # Add any mime-type you think is appropriate here
    AddOutputFilterByType DEFLATE application/json
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...