レンタルサーバーで利用できるWebサイト高速化機能mod_pagespeedとは?

mod_pagespeed(PageSpeed Module)はGoogle Developersが無償で公開しているWebサイトの高速化モジュールです。ApacheとNginxに対応しており、一部のレンタルサーバーでは標準機能として採用されています。

mod_pagespeedの仕組み

Webサイトを運営すると分かりますが、サーバから受け取るファイルが多く、データが大きいほどダウンロードに時間がかかります。結果として、Webブラウザのレンダリング(描画処理)の負荷となり、レスポンスの悪いWebサイトとなってしまいます。

ブラウザの表示速度を向上させるために、HTMLを正しく記述したり、CSSやJavaScriptの軽量化と結合、画像ファイルの圧縮など、様々な最適化作業が必要となります。

ネットワーク環境が安定し、サーバーやクライアント(訪問者のPC)の性能も著しく向上しているので、そこまで気にする必要はありませんが、軽く(速く)表示されると気持ちの良いものです。

これらの最適化作業を自動的に行ってくれるのが mod _pagespeed です。mod_ pagespeedは多くのフィルタ(最適化機能)で構成され、必要なフィルタをカスタマイズして利用します。

多くのレンタルサーバーではWebサーバーアプリケーションとしてApacheを採用しており、mod_pagespeedはApacheのモジュールとして動作します。Webサイトの構造(プログラム言語等)に関係なく、各リソースを最適化してクライアントに返すことができます。

仕組みを考えれば分かりますが、サーバーの負荷が増加します。サーバーのスペックが低いと十分な効果が出ないどころか、逆効果になる可能性もあります。レンタルサーバーでmod_pagespeedを採用しているのであれば、十二分な性能が出ることを検証済みなのでしょう。

デフォルトで機能するフィルタは以下の通りです。他にも多くのフィルタが存在するので、興味があればGoogle Developersを覗いてみてはいかがでしょうか。

add_head 要素がない場合に挿入する。
combine_css 複数のCSS要素を結合する。
combine_javascript 複数のJavaScriptを結合する。
convert meta tags metaタグのうちhttp-equiv属性のものをレスポンスヘッダ値に置き換える。
extend_cache 最適化を行わなかったCSS、JSおよび画像について、コンテンツのハッシュ付きURLを付与することでキャッシュ有効期間を延長する。
fallback rewrite css_urls 解析・圧縮できないCSSでも参照情報(URL)を書き換えます。
flatten css imports @import句を事前に読み込み1つのファイルにする。
inline_css 小さな外部CSSファイルをHTML内に埋め込む。
inline import to_link CSSの@importsしか行なっていない<style>タグを<link>タグによる読込に書き換える。
inline_javascript 小さな外部JavaScriptファイルをHTML内に埋め込む。
rewrite_css CSS内のスペースやコメントを除去する。また画像系オプションが有効な場合、CSS内でロードしている画像も書き換えたりキャッシュ延長の対象とする。
rewrite_images 画像の最適化、再エンコード、不要なピクセルの除去を行う。また、小さな画像はインライン化する。
rewrite_javascript JavaScript内の不要な空白やコメントを除去する。
rewrite style attributes with url スタイル属性内のurlを含むCSSにもrewite_cssの設定を適用する。

デメリット

ユーザーが作成したデータを加工するため、mod pagespeed未使用時(テスト環境)では問題なく表示されいたコンテンツが、mod pagespeed使用時に不具合を起こす可能性があります。Webブラウザによっては表示が崩れたり、スクリプトエラーが発生するかもしれません。

キャッシュ機能があるため、頻繁にデザインや機能を更新するWebサイトには向きません。つまり、CSS等のファイルを更新しても、サーバーがクライアントに返すのは過去のデータ(キャッシュ)です。このことを忘れていると、ブラウザのキャッシュを削除したり、関係のない部分を調べたりと無駄な時間となります。

キャッシュの更新間隔はレンタルサーバーによって違うでしょう。動作確認の度にキャッシュが更新されるのを待つわけにもいきません。もしファイル更新時に反映されないときは、mod_pagespeedをOFFにするとよいでしょう。

デザインが固まっており、コンテンツのみ更新するようなサイトであれば問題は少ないでしょう。それでも正しく描画されるかの確認は必要です。

カスタマイズ

mod_pagespeedには多数のフィルタが用意されており、必要なフィルタをカスタマイズして利用することが前提となっています。レンタルサーバーによっては、カスタマイズが許可されていないかもしれませんが、基本的にはhtaccessファイルを編集することで機能の有効・無効を切り換えることができます。

#フィルタの無効化
ModPagespeedDisableFilters フィルタ名

#フィルタの有効化
ModPagespeedEnableFilters フィルタ名

これはエックスサーバーの設定画面です。ON・OFFのみと非常にシンプルです。