Google謹製Apacheモジュール「mod_pagespeed」
mod_pagespeedをテストサーバに導入してどれぐらいのパフォーマンスが出るものなのか検証してみました。
mod_pagespeedの効果
mod_pagespeedは、サーバを高速化するのではなく、出力するHTMLを高速に表示できるよう書き換えるモジュール。つまり、サーバが頑張って、ユーザの体感速度を向上させる。
- 外部CSSファイルの連結
- 外部JSファイルの連結
- CSS・JavaScriptのminify(最適化)
- CSS・JavaScriptの一部HTMLインライン化
- その他の画像はEtag Cache-control付きの画像に書き換えられる
- ファイルサイズの小さい画像は data URI scheme(base64)
- 画像の幅・高さ自動調整(これは、大きい画像を無理やり小さく表示している場合など?)
- ホワイトスペース・コメントの削除
- headタグの整形
- HTMLの整形
- 余計なクォーテーションを削除
- スクリプト無効(実験用ステータス?)
他にも細かい機能があったと思うけど、ほぼ関係ないので割愛。
計測条件
- ローカルサーバに、HTML+画像+CSS+JSのみの構成(PHPやDBなどサーバ側の要素をなくすため)
- 外部ホストCSS/JSは読み込まない
- Firefoxは、Firebugによる計測/Chromeは、デベロッパーツールにて計測
- InternetExplorerに関しては、Fiddlerによるコネクション時間計測のみで、レンダリング速度は入っていない
- 10回読み込んだ平均秒数
テーブルレイアウトの場合
- 基本、テーブルレイアウトの前時代なページ
- 外部CSSは1ファイル
- 外部JSは4ファイル(jQueryなどのライブラリ)
ブラウザ | 通常 | 通常(キャッシュなし) | pagespeedあり | pagespeedあり(キャッシュなし) |
---|---|---|---|---|
Firefox | 2.55sec | 5.87sec | 2.89sec | 2.84sec |
Chrome | 1.74sec | 5.87sec | 2.89sec | 2.84sec |
InternetExplorer | 1.21sec | 1.70sec | 1.01sec | 1.35sec |
レンダリング速度は、遅くなることがほとんどだった。
CSSレイアウトの場合
- 基本、CSSでレイアウト
- 外部CSSは4ファイル
- 外部JSは4ファイル(jQueryなどのライブラリ)
ブラウザ | 通常 | 通常(キャッシュなし) | pagespeedあり | pagespeedあり(キャッシュなし) |
---|---|---|---|---|
Firefox | 2.33sec | 3.50sec | 1.06sec | 1.78sec |
Chrome | 1.63sec | 2.04sec | 1.22sec | 1.16sec |
InternetExplorer | 1.17sec | 1.31sec | 0.99sec | 1.25sec |
安定して速度の向上が見られた。
ab(ApacheBenchmark)によるサーバ負荷計測
通常 | pagespeedあり |
---|---|
3444[#/sec] | 55[#/sec] |
想定よりも差が広がった。ただ、load averageは、0.5を上回ることはなかったので、よほどアクセス数があるサーバでない限りは問題はない…のだろうか。うーん。せめて200程度は欲しいと思っていたけど。
Apacheのメモリ使用量
通常 | pagespeedあり |
---|---|
16.884KB | 31,868KB |
約2倍弱。メモリに余裕が無い場合は、プロセス数を制限しないと導入自体が難しい。
まとめ
けっこうなサーバ負荷が計測された。その上、ページの作りによっては全然パフォーマンスを得られないケースが多かった。テーブルレイアウト・CSSレイアウト以外にも、ハイブリッドなレイアウトなど色々と試してみたけど、殆どのケースで変化なし・微妙に遅いという結果に。
小さい画像がたくさんあるケースで、なおかつCSSレイアウトの場合は、速度向上が期待できるので、その場合は導入してもいいかもしれない。ただ、サーバリソースに余裕が無いからなのか、mod_pagespeedのバグなのか判断できなかったけど、生成される画像が壊れていたりと微妙に不安定だった。
まだbetaなので、今後に期待していきたいところ。
というか、この程度であればモジュールを使わずに事前にサイト設計に折り込めば、同様の恩恵が受けられるかもしれない。
[...] This post was mentioned on Twitter by fukuchi, ZARU(ざる). ZARU(ざる) said: mod_pagespeedのパフォーマンスを計測して、簡単にまとめてみた。 http://tinyurl.com/26fcrpc [...]