Назад | Перейти на главную страницу

Apache: сжатие как zip (не gzip)

Я настроил apache 2.4 для сжатия содержимого перед его доставкой клиенту, используя mod_deflate и заголовок клиентов установлен на "Accept-Encoding: gzip". Итак, я уже начал работать, создав действительный сжатый файл:

curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz

Есть ли способ разрешить "Accept-Encoding: zip" сжать как zip?

Насколько я понимаю документацию, это кажется невозможным:

Кодировка gzip - единственная поддерживаемая для обеспечения полной совместимости со старыми реализациями браузеров. Кодировка deflate не поддерживается ... (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html)

Вопрос исходит от Windows пользователь, который не может распаковать gzip файлы (я предполагаю, используя только собственные инструменты Windows).

[редактировать: как заметил Джеральд-Шнайдер, браузер автоматически распаковывает контент, но мы используем curl и такие инструменты командной строки, чтобы иметь возможность писать скрипты для API и, следовательно, не задействовать браузер. Спасибо также за все остальные ответы и комментарии, я думаю, что мне следовало быть более точным, то есть записать curl команда для начала].

Я думаю, вы неправильно поняли, для чего нужно сжатие в протоколе HTTP. Это не для скачивания архивов. Это необходимо для уменьшения объема данных, передаваемых, когда вы просто просматриваете страницы. Он сжимает файлы HTML, CSS, JavaScripts и изображения. Распаковка выполняется браузером до того, как он отобразит страницы. И браузеры прекрасно справляются с gzip в Windows.

Как указано в цитировании вопроса документации apache, это не можно настроить apache для обслуживания содержимого, сжатого как zip с mod_deflate и заголовок клиента установлен на Accept-Encoding: zip. Только gzip работает. Если пользователь использует браузер этот браузер будет декодировать его на лету. Если пользователь загрузки контент, например, curl она должна застегнуть gziped, будь то собственные инструменты ОС или установленные (последнее необходимо, например, для пользователей Windows).

Читая ваш комментарий, я немного не понимаю, о чем вы спрашиваете:

  • Вы хотите, чтобы ваш сервер apache отправлял обычный (например, html или простой текст) файл с кодировкой Zip вместо Gzip? (Невозможно согласно документации)
  • Вы хотите, чтобы curl мог получать данные с вашего сервера? (в этом случае вам не нужно беспокоиться о кодировке, поскольку это всего лишь «незначительная» оптимизация сети)
  • Вы хотите, чтобы curl загрузил какой-нибудь zip-контент? В этом случае вам следует вместо этого настроить httpd, чтобы он обслуживал ваш zip-архив напрямую с некоторыми настройками "статического файла".

В любом случае, я не уверен, что кодирование контента - это то, что вы здесь ищете ...