Webサーバーでgzip圧縮を設定するにはどうすればよいですか?
-
03-07-2019 - |
質問
私はその上に合計2メガのスペースがある組み込みWebサーバーを持っています。通常、クライアントのためにファイルをgzipで圧縮しますが、これによりサーバー上のスペースを節約できます。 jsファイルをgzipで圧縮してサーバーに保存できることを読みました。 IISでテストしましたが、まったく運がありませんでした。この作業を行うには、プロセスのすべてのステップで正確に何をする必要がありますか?
これは次のようになると思います:
- gzip foo.js
- htmlのリンクを、.jsではなくfoo.js.gzを指すように変更します
- レスポンスに何らかのヘッダーを追加しますか?
ご協力ありがとうございます。
-fREW
編集:ウェブサーバーはその場で何もできません。 ApacheやIISではありません。 ZiLogプロセッサ上のバイナリです。ストリームを圧縮できることを知っています。ファイルを一度圧縮して圧縮したままにしておくこともできると聞きました。
解決
他の人がmod_deflateがあなたのためにそれを行うと述べたように、それは組み込み環境なので手動でそれを行う必要があると思います。
まず、gzipした後、ファイルfoo.jsの名前を残す必要があります。
htmlファイルを変更しないでください。ファイルはまだfoo.jsであるため
(gzipされた)foo.jsの応答ヘッダーでヘッダーを送信します
Content-Encoding: gzip
これでうまくいくはずです。クライアントはfoo.jsを要求し、Content-Encoding:gzipの後にgzip圧縮されたファイルを受け取ります。これは解析前に自動的にzip圧縮されます。
もちろん、これはクライアントがgzipエンコーディングを理解していると確信していることを前提としています。不明な場合は、リクエストヘッダーに次が含まれている場合にのみgzip圧縮データを送信する必要があります
Accept-Encoding: gzip
他のヒント
ウェブサーバーでgzip圧縮を使用することは、通常、帯域幅を節約するためにウェブサーバーからの出力を圧縮することを意味します。
この説明をご覧ください または これ例
Apacheを使用している場合、 mod_deflate を使用します。その場で圧縮します。
何かをgzipする場合、それはファイルでなければならない、と考えることで混乱していると思います。代わりに、ファイルが単なるデータのストリームであり、そのデータのストリームがここで圧縮、送信、および圧縮解除されることを考えてください。クライアントはそれについて考える必要さえありません。