GZIP автоматически декомпрессируется браузером?

Я включил сжатие gzip в IIS 8.0, следуя URL-адресу Включение Gzip в IIS в Windows 8 Я вызываю внешние службы отдыха из своего приложения через jquery ajax call и код С#, в настоящее время мой внешний веб-сервис не сжимается gzip. Если я попрошу моего сервис-партнера gzip их ответ, мне нужно написать любую логику декомпрессии в моем коде на стороне jquery и стороне С# или браузере, автоматически декомпрессирует ответ для меня?

Ответы

Ответ 1

Все современные браузеры могут обрабатывать gzip-кодированный ответ. На самом деле, если вы посмотрите на их запросы, у них будет заголовок, который говорит что-то в строках Accept-Encoding: gzip, и это их способ сказать серверу, что они могут обрабатывать gzipped-ответы.

Важная роль заключается в том, что ваш сервер может возвращать как gzip, так и несжатые ответы в зависимости от существования и значения этого заголовка. Если клиент не отправляет заголовок Accept-Encoding, вы не должны его сжимать. Если клиент отправляет его, вы можете дополнительно закодировать ответ с помощью gzip. Не все содержимое должно быть сжато, поскольку оно уже может быть сжато, и вы теряете процессорные циклы. Изображения JPEG обычно являются хорошим примером этого. Скорее всего, IIS также принимает интеллектуальное решение и только сжимает то, что необходимо, когда это необходимо.

Вы можете проверить, что IIS делает то, что должно быть, просматривая заголовки ответов, возвращающиеся с вашего сервера и ищущие заголовок Content-Encoding: gzip. Это сообщает клиенту или браузеру, что контент кодируется с использованием сжатия gzip, и он должен соответствующим образом распаковать его.

Все запросы на основе браузера (например, AJAX/jQuery, обычные запросы) будут автоматически распаковываться без дополнительных усилий. Браузер - это клиент, ответственный за определение того, может ли он обрабатывать gzip и будет добавлять заголовок Accept-Encoding, если это произойдет. Ваш код JavaScript получит несжатую его версию в вашем обработчике ответов.

TL; DR: включение его обычно является хорошей идеей, и вам не нужно выполнять дополнительную работу.

Ответ 2

Если сжатие gzip включено на веб-сервере, то есть не в логике приложения, браузер автоматически распакуется.

Фактически, если браузер не поддерживает компрессию, веб-сервер будет отправлять несжатые данные (эта информация находится в заголовках HTTP-запросов/ответа, обмениваемых между браузером и веб-сервером). Просто имейте в виду, что сжатие неэффективно с JPEG и другими уже сжатыми форматами.