Я настроил 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).
[редактировать: как заметил gerald-schneider, браузер автоматически распакует содержимое - но мы используем curl
и такие инструменты командной строки, чтобы иметь возможность писать скрипты API, и, таким образом, браузер не участвует. Спасибо также всем остальным ответам и комментариям, я думаю, что мне следовало быть более точным, т. е. записать команду curl
для начала].
решение1
Я думаю, вы не поняли, для чего используется сжатие в протоколе HTTP. Оно не для загрузки архивов. Оно предназначено для уменьшения объема данных, которые передаются, когда вы просто просматриваете веб-страницы. Файлы, которые сжимаются с его помощью, — это HTML, CSS, JavaScript и изображения. Распаковка выполняется браузером до отображения страниц. И браузеры прекрасно справляются с gzip в Windows.
решение2
Как указано в цитате из документации Apache, этонетможно настроить apache для обслуживания сжатого контента zip
с mod_deflate
заголовком клиента, установленным на Accept-Encoding: zip
. gzip
Работает только. Если пользователь используетбраузерчто браузер расшифрует его на лету. Если пользовательзагрузкинапример, curl
ей необходимо сжать gzip
содержимое архива, используя собственные инструменты ОС или установленные (последнее необходимо, например, для пользователей Windows).
решение3
Читая ваш комментарий, я немного не понимаю, о чем вы спрашиваете:
- Хотите ли вы, чтобы ваш сервер Apache отправлял обычный (например, HTML или обычный текст) файл с кодировкой Zip вместо Gzip? (Согласно документации, это невозможно)
- Хотите ли вы, чтобы curl мог извлекать данные с вашего сервера? (в этом случае вам не нужно беспокоиться о кодировке, поскольку это всего лишь «незначительная» оптимизация сети)
- Хотите, чтобы curl скачивал какой-то zip-контент? В этом случае вам следует настроить httpd так, чтобы он напрямую обслуживал ваш zip-архив с некоторыми настройками "статического файла"
В любом случае, я не уверен, что кодирование контента — это то, что вы здесь ищете...