特定のサイト(VirtualHost)にだけmod_pagespeedを入れる

2017年12月13日WordpressLinux, Wordpress, Ubuntu, mod_pagespeed, Apache

最近のサイトではほとんど出てこない「mod_pagespeed」だが、ウェブサイトの高速化にはまだまだ効果があるようだ。
そこで、今回はこのサイトを構成しているVirtualHostにのみmod_pagespeedを導入してみた。

mod_pagespeedとは

mod_pagespeedは、Googleが提供しているApacheのアドオンで、以下のような操作を行うことでクライアント端末からのページロードを高速化させるとのこと。

  • 画像の再圧縮
  • リクエストの最適化(javascriptやcssの再編成)
  • HTTP接続の最小限化

なんだかサーバー側のリソースが結構必要になりそうだが、とりあえずやってみよう。

インストール

aptでは提供されていないので、本家のサイトからダウンロードしてインストールをする。

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
sudo dpkg -i mod-pagespeed-*.deb
sudo apt-get -f install

モジュールの設定

このままだと全てのサイトに適用されてしまうで、設定の変更を行う。

まず、/etc/apache2/mods-available/pagespeed.confを開き、次のように編集。

# Turn on mod_pagespeed. To completely disable mod_pagespeed, you
# can set this to "off".
ModPagespeed off #元々onだった

# VHosts should inherit global configuration.
# This option is only for backwards compatibility and will be removed
# in the next major mod_pagespeed release.
ModPagespeedInheritVHostConfig on

最初の「ModPagespeed」はApache全体に設定を適用するもの、次の「ModPagespeedInheritVHostConfig」は、設定を各VirtualHostに継承する設定である(ただし、記載されているとおり次のメジャーリリースからこのオプションはなくなるらしい)。

VirtualHostでmod_pagespeedを有効化

Mod_pagespeedを有効にしたいVirtualHostに次の記載をする。

<IfModule pagespeed_module>
  ModPagespeed on
   ModPagespeedFileCachePath "/var/mod_pagespeed/cache/"
</IfModule>

モジュールの有効化とApacheの再起動

最後に、モジュールを有効化してApacheを再起動する。

a2enmod pagespeed
service apache2 restart

効果の確認

懲りずに今回もGTMetrixを用いた。

GTmetrix | Website Speed and Performance Optimization
GTmetrix is a free tool that analyzes your page's speed performance. Using PageSpeed and YSlow, GTmetrix generates scores for your pages and offers actionable recommendations on how to fix them.

mod_pagespeed導入前

以前

mod_pagespeed導入後

スクリーンショット 2017-12-05 22.22.13

どうやら相当に効果がある模様。

コンソールを利用してみる

pagespeed.confの下の方にある「ModPagespeedStatistics」をonにし、Locationの設定を正しく行うと、mod_pagespeedのコンソール(管理画面)を利用することが出来る。

例えば、どんなフィルタが有効になっているのかを確認することが出来る。

Filters
ah Add Head
cc Combine Css
jc Combine Javascript
gp Convert Gif to Png
jp Convert Jpeg to Progressive
jw Convert Jpeg To Webp
mc Convert Meta Tags
pj Convert Png to Jpeg
ws When converting images to WebP, prefer lossless conversions
ec Cache Extend Css
ei Cache Extend Images
es Cache Extend Scripts
fc Fallback Rewrite Css
if Flatten CSS Imports
hw Flushes html
ci Inline Css
ii Inline Images
il Inline @import to Link
ji Inline Javascript
js Jpeg Subsampling
rj Recompress Jpeg
rp Recompress Png
rw Recompress Webp
ri Resize Images
cf Rewrite Css
jm Rewrite External Javascript
jj Rewrite Inline Javascript
cu Rewrite Style Attributes With Url
cp Strip Image Color Profiles
md Strip Image Meta Data

使用するフィルターを変更する(イメージを圧縮しないようにする)

公式のサイトに、configの書き方が掲載されている。

これによれば、フィルタ単位で利用しない設定をかけることが可能とのこと。

今回は、画像の圧縮(rewrite_images)をしないようにする。

Apacheのpagespeed.confに、下記の一文を追加し、reloadする。

ModPagespeedDisableFilters rewrite_images

すると、コンソール上でも画像関連のフィルタが適用されていなくなっていることが分かる。

Filters
ah Add Head
cc Combine Css
jc Combine Javascript
mc Convert Meta Tags
ec Cache Extend Css
ei Cache Extend Images
es Cache Extend Scripts
fc Fallback Rewrite Css
if Flatten CSS Imports
hw Flushes html
ci Inline Css
il Inline @import to Link
ji Inline Javascript
cf Rewrite Css
jm Rewrite External Javascript
jj Rewrite Inline Javascript
cu Rewrite Style Attributes With Url

画像の圧縮をやめても点数に大きな影響はなかった。

スクリーンショット 2017-12-05 22.50.46

総評

mod_pagespeedは、入れるだけで比較的大きな効果がありそう。なので、サーバーやVPSでウェブサイトを運用しているのであれば、是非とも入れて良いのではないか。
画像の圧縮だけ、気になる場合は結構圧縮されてしまうため、外しておくのが良いかと思う。