コンポーネントをGzipする

Gzip Components
HTML, JavaScript, CSSgzipで圧縮してネットワーク転送しましょう、というお話。
画像(gif, jpeg, png等)、PDF等は、既に圧縮されているので無駄にCPU使うだけなのでやめましょう。
圧縮をサポートしていないブラウザを使う場合、Proxyを経由した場合等も場合によっては考慮する必要ありです。

10MB(10,486,076 byte)のHTMLファイル作って検証してみました。

  • 10MB圧縮なし
    • 30〜40秒かかった。
  • 10MB圧縮あり
    • 1秒未満
    • 圧縮したファイルサイズは 30,916 byte。

かなりの違いが見られました。これだけみると圧縮したほうが良いですが、
圧縮はCPUリソースを使うため、サーバーのCPUが不足している場合は要検討です。

あと、サイズによっては圧縮しないほうが良いものもあるかもしれません(1K未満とか)。

Apache2.2での簡単な設定です。

LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/css application/javascript

この設定を行ったら apacheの再起動を行います。

仕組み

その状態でブラウザが

Accept-Encoding: gzip, deflate

なリクエストを送ってくると、
apacheは、コンテンツを圧縮して

Content-Encoding: gzip

なレスポンスで応答します。