apache 2.4
クライアントに配信される前に を使用しmod_deflate
、クライアントのヘッダーを に設定してコンテンツを圧縮するように構成しました"Accept-Encoding: gzip"
。これですでに動作し、有効な gzip 圧縮ファイルが生成されています。
curl --header "Accept-Encoding: gzip" https://my.website/ > content.gz
"Accept-Encoding: zip"
として圧縮できるようにする方法はありますかzip
?
私が理解している限り、ドキュメントではこれは不可能のようです:
古いブラウザ実装との完全な互換性を確保するためにサポートされているのは gzip エンコーディングのみです。deflate エンコーディングはサポートされていません... (参考:)
Windows
質問は、ファイルを解凍できないユーザーgzip
(Windows ネイティブ ツールのみを使用していると思われます)から寄せられました。
[編集: gerald-schneider さんが指摘したように、ブラウザは自動的にコンテンツを解凍しますが、私たちは API をスクリプト化できるようにコマンドラインツールなどを使用しているため、ブラウザは関与していません。他のすべての回答とコメントにも感謝します。もっと正確に、つまり最初にコマンドcurl
を書き留めておくべきだったと思います。curl
答え1
HTTP プロトコルの圧縮の目的を誤解されていると思います。圧縮はアーカイブをダウンロードするためのものではありません。単にブラウズしているときに転送されるデータを削減するためのものです。圧縮されるファイルは HTML、CSS、JavaScript、画像です。解凍はページを表示する前にブラウザによって処理されます。また、ブラウザは Windows 上で gzip を問題なく処理できます。
答え2
質問のApacheドキュメントの引用で指摘されているように、ないApacheを設定して、 とクライアントのヘッダーをzip
に設定して、コンテンツを圧縮して配信することができます。mod_deflate
Accept-Encoding: zip
gzip
動作します。ユーザーがブラウザブラウザはそれを即座にデコードします。ユーザーがダウンロードたとえば、OS ネイティブ ツールまたはインストールされたツール (後者は Windows ユーザーなどに必要) を使用して、ed コンテンツをcurl
gunzip する必要があります。gzip
答え3
あなたのコメントを読んで、何を尋ねているのか少しわかりません。
- Apache サーバーで、Gzip ではなく Zip エンコードされた通常のファイル (HTML またはプレーンテキスト) を送信するようにしたいですか? (ドキュメントによると不可能です)
- curl でサーバーからデータを取得できるようにしますか? (その場合、エンコードは単なる「マイナーな」ネットワーク最適化なので、気にする必要はありません)
- curl で zip コンテンツをダウンロードしたいですか? その場合は、代わりに httpd を設定して、いくつかの「静的ファイル」設定で zip アーカイブを直接提供する必要があります。
とにかく、ここで探しているものがコンテンツエンコーディングであるかどうかはわかりません...