Совместима ли кодировка gzip с JSON? - PullRequest
9 голосов
/ 18 марта 2009

Я пытаюсь сгладить некоторые странности, связанные с моими AJAX-вызовами. Мои PHP-скрипты имеют это в начале:

ob_start("ob_gzhandler");

Отлично работает с HTML. Но есть ли проблемы с этим с данными application / json? Любые проблемы с браузером кто-нибудь знает?

Ответы [ 4 ]

7 голосов
/ 18 марта 2009

Я так не думаю ... Я использовал статические файлы, хранящиеся в формате GZIP JSON, и с AJAX все работало нормально.

edit: Я проверил свой php-скрипт, и единственное, что я сделал, это включил следующие заголовки:

Content-Encoding: gzip
Content-Type: text/plain

Если я правильно помню, всякий раз, когда я пытался изменить Content-Type на что-то, что указывало бы на JSON, у клиента возникали проблемы.

3 голосов
/ 18 марта 2009

Некоторые старые браузеры, такие как определенные версии IE6, испортили сжатый контент, особенно контент js.

Просто убедитесь, что ваш сервер отправляет правильный заголовок кодировки контента, то есть

Content-Encoding: gzip

Вы также должны проверить заголовки, отправленные браузером, на предмет правильного заголовка кодировки подтверждения перед отправкой сжатого содержимого ... то есть

Accept-Encoding: gzip,deflate
2 голосов
/ 18 марта 2009

Вы можете выдавать сжатый контент всякий раз, когда браузер указывает gzip в Accept-Encoding заголовке запроса. В этом случае нет никакой разницы между JSON и HTML, и никаких проблем не возникнет.

1 голос
/ 18 марта 2009

Вместо включения сжатия в PHP, я бы включил сжатие в Apache (используя mod_deflate), чтобы вы могли проверять наличие различных несовместимых браузеров и отправлять сжатые данные только в те браузеры, которые принимают их и обрабатывают их правильно.

http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

...