YSlowでウェブサイトのパフォーマンスを改善: gzip圧縮を有効にする

杉山貴章(オングス)
2008-11-25 17:00:00
  • このエントリーをはてなブックマークに追加

gzip圧縮を利用して転送量を削減する

 「Gzip components」の項目はコンポーネントの送信にgzip圧縮機能を利用しているかどうかを判定している。ウェブサーバとウェブブラウザの双方がgzip圧縮に対応していれば、サーバ側でコンポーネントを圧縮し、ブラウザ側で自動的に解凍することで転送量を削減することができる。特にテキスト形式のファイル送信には効果的で、本稿の例でもHTML、CSS、JavaScriptの各ファイルが対象として挙げられていた。

 Apache HTTP Serverの場合はmod_deflateモジュールを利用することで圧縮転送を有効にすることができる。まずhttpd.confにリスト1の設定を追加してmod_deflateモジュールをロードする。

リスト1 httpd.confにmod_deflateモジュールをロードする設定を追加

LoadModule deflate_module modules/mod_deflate.so

 その上で圧縮対象に関する設定を記述する。リスト2は画像以外のファイルを全て圧縮する設定である。

リスト2 画像以外のファイルを圧縮転送する設定例


 
  SetOutputFilter DEFLATE
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
  SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
  Header append Vary User-Agent env=!dont-vary
 

 最初の「SetOutputFilter DEFLATE」で圧縮を有効にし、「BrowserMatch」の行で対象となるブラウザを指定している。設定内容の詳細はApacheのマニュアルを参照して欲しい。

 上記の修正を行った結果、YSlowによる評価は図1のように向上した。gzipを有効にした影響で13番のETagについてもA評価に上がっている。ETagについては複数サーバで負荷分散している場合には無効化した方が良いが、今回は特に影響しないので無視してしまっても問題はない。

図1 4番の評価がAに向上し、総合評価も88点になった 図1 4番の評価がAに向上し、総合評価も88点になった

 キャッシュ状況は図2のようになっており、修正前のグラフと比べるとトータルサイズが大幅に減少していることがわかる。

図2 転送するファイルサイズが大幅に削減された 図2 転送するファイルサイズが大幅に削減された

 このようにYSlowをうまく使えば効果的なパフォーマンスの改善を行うことができる。もちろんYSlowの評価だけ鵜呑みにするのではなく状況に応じた対策を行うことが重要だが、高パフォーマンスなサイトを目指す指針としては極めて利用価値の高いツールと言えるだろう。

  • 新着記事
  • 特集
  • ブログ