PageSpeedは、Googleが提供しているWebサイト高速化モジュールです。
HTTPサーバに組み込んで使います。
前々から気になっていたモジュールですが、先日このような記事を見かけたので試してみました。
Googleの秘策「PageSpeed」をガジェット速報に導入したら表示速度が3倍速くなった!
http://ggsoku.com/2013/06/google-pagespeed/
今回は、PageSpeedのNginx版である、ngx_pagespeedモジュールを使います。
Nginxのインストールから、ngx_pagespeedの導入、検証までを行います。
NginxはApache HTTP ServerのようなDSO(動的モジュールロード) に対応していませんので、ngx_pagespeedモジュールの準備をしたあと、Nginxをソースからビルドして静的に組み込みます。
※ NginxベースのHTTPサーバ Tengine(http://tengine.taobao.org/)では、DSOがサポートされていてngx_pagespeedがインストールできるそうです。
https://github.com/pagespeed/ngx_pagespeed/wiki/Using-ngx_pagespeed-with-Tengine
興味のある方は試してみてください。
環境
CentOS 6.4
nginxとPageSpeedモジュールをインストール
インストールに必要なライブラリを準備しておきます。
# yum install gcc-c++ pcre-dev pcre-devel zlib-devel make |
nginxのPageSpeedモジュール(ngx_pagespeed)を準備。
# cd ~ # wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.5.27.3-beta.zip # unzip release-1.5.27.3-beta # cd ngx_pagespeed-release-1.5.27.3-beta/ # wget https://dl.google.com/dl/page-speed/psol/1.5.27.3.tar.gz # tar -xzvf 1.5.27.3.tar.gz |
nginxの最新版nginx 1.5.1をソースからインストール。
# cd ~ # wget http://nginx.org/download/nginx-1.5.1.tar.gz # tar xvfz nginx-1.5.1.tar.gz # cd nginx-1.5.1 # ./configure --add-module=$HOME/ngx_pagespeed-release-1.5.27.3-beta # make # make install |
nginxのバージョンを確認。
# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.5.1 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) configure arguments: --add-module=/root/ngx_pagespeed-release-1.5.27.3-beta |
nginxの起動スクリプトを設置。
# ln -s /usr/local/nginx-1.5.1 /usr/local/nginx # wget -O /etc/init.d/nginx 'http://wiki.nginx.org/index.php?title=RedHatNginxInitScript&action=raw&anchor=nginx' # chmod +x /etc/init.d/nginx # vi /etc/init.d/nginx |
22行目を編集
nginx="/usr/local/nginx/sbin/nginx" |
25行目を編集
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" |
52行目をコメントアウト
#make_dirs |
nginxの起動スクリプトをchkconfigに登録して、自動起動するようにしておきましょう。
# chkconfig nginx on # chkconfig --list nginx |
PageSpeedモジュール(ngx_pagespeed)のフィルタ設定
nginx設定ファイルのserverブロックにPageSpeedの設定を追記します。
# vi /usr/local/nginx/conf/nginx.conf server { ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ pagespeed on; pagespeed RewriteLevel CoreFilters; pagespeed FileCachePath /var/cache/ngx_pagespeed_cache; pagespeed EnableFilters collapse_whitespace,trim_urls,remove_comments; |
このまま、nginxをスタート!といきたいところですが、キャッシュディレクトリに書き込みができなくて、アラートが出ます。
# /etc/init.d/nginx start Setting option from ("on") Setting option from ("RewriteLevel", "CoreFilters") Setting option from ("FileCachePath", "/var/cache/ngx_pagespeed_cache") Setting option from ("EnableFilters", "collapse_whitespace,trim_urls,remove_comments") nginx: [emerg] "root" directive FileCachePath must be an nginx-writeable directory in /usr/local/nginx/conf/nginx.conf:124 nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed |
キャッシュディレクトリを作成してあげましょう。
# mkdir /var/cache/ngx_pagespeed_cache # chown daemon.daemon /var/cache/ngx_pagespeed_cache |
nginxをスタート。
# /etc/init.d/nginx restart |
PageSpeedモジュールが有効になっているか確認をします。
レスポンスヘッダにX-Page-Speedが追記されていればOKです。
# curl -I 'http://localhost/' | grep X-Page-Speed % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 X-Page-Speed: 1.5.27.3-3005 |
PageSpeedモジュールの設定解説
pagespeed on; pagespeed RewriteLevel CoreFilters; pagespeed FileCachePath /var/cache/ngx_pagespeed_cache; pagespeed EnableFilters collapse_whitespace,trim_urls,remove_comments; |
今回はこのように、PageSpeedモジュールを設定をしました。
各項目について解説します。
PageSpeedモジュールを有効にします。
pagespeed on; |
CoreFiltersを読み込みます。
pagespeed RewriteLevel CoreFilters; |
以下のフィルタが有効になります。
combine_css,extend_cache,inline_css,inline_javascript,rewrite_css,rewrite_images,rewrite_javascript |
適応させたくない場合は、このように設定してください。
pagespeed RewriteLevel PassThrough; |
フィルタを追加しています。
カンマ区切りで記述します。
collapse_whitespace HTML内の不要な空白を削除
trim_urls URLから不要なプレフィックスを削除
remove_comments HTMLのコメントを削除
pagespeed EnableFilters collapse_whitespace,trim_urls,remove_comments; |
さらに、色いろなフィルタがあります。
公式ページを参考に設定してみましょう。
http://ngxpagespeed.com/ngx_pagespeed_example/
検証
本当にブラウザからの読み込みが早くなっているかどうか、検証してみます。
WordPressで試してみました。
PageSpeedオフ
ページサイズ404KB, 読み込み時間294ms
PageSpeedオン
ページサイズ376KB, 読み込み時間348ms
結果、PageSpeedをオンにしたら読み込み時間が若干遅くなりました。
代わりに、ページサイズが小さくなっていることがわかります。
HTMLソースを見ると、不要な記述が省略されていたりと色々な最適化がされています。
まとめ
PageSpeedは、Webページのデータを圧縮する効果があります。
1ページのサイズが大きく、転送量の多いWebサイトに向いているモジュールだと言えます。
逆にシンプルなWebサイトでは不要だと思われます。
適用するWebサイトがどのようなWebサイトか見極めてから試していくのが良いでしょう。
また、PageSpeed(ngx_pagespeed)は、ベータ版のモジュールです。
プロダクション環境で使う場合には必ず動作テストを行なってください。
参考
pagespeed/ngx_pagespeed · GitHub
https://github.com/pagespeed/ngx_pagespeed
ngx_pagespeed – Make the Web Faster — Google Developers
https://developers.google.com/speed/pagespeed/ngx
Nginx 用 pagespeed モジュール ngx_pagespeed を試してみたよ
http://dogmap.jp/2013/01/24/ngx_pagespeed/
”Nginx のリバースプロキシキャッシュを使用している場合、キャッシュ時間を指示してあげる必要があります。”
nginxにSPDYを導入して、Webページを高速化する方法
https://www.e-agency.co.jp/column/20130129.html
SSLを使っているWebサイトならば、SPDYの導入も検討して良いと思います
PICK UP
-
タグ: エンジニア募集, オウンドメディア, コラム, ビジネス職, リモートワーク, レコメンドエンジン, 中途採用, 働きやすい環境, 採用強化, 採用情報, 社内文化, 翻訳ツール
【オープン社内報 2025年9月号】イー・エージェンシー プレミアムニュース -
タグ: エンジニア採用, キャリア採用, コミュニケーション, コラム, ブログ, リモートワーク, ワーケーション, 採用情報, 文化, 環境
2025年9月の募集職種一覧!ビジネス職を中心に採用強化中!|株式会社イー・エージェンシー公式note -
タグ: Cloud Shell構築, GA4, GA分析自動化, Gemini CLI, Google アナリティクスMCP, LLM連携, コラム, データ対話型分析, モデルコンテキストプロトコル, 自然言語分析
2025年7月発表!自然言語でGA4を分析できる「Google アナリティクスMCPサーバー」を構築する方法 -
タグ: AIエージェント, GA360, Gemini in Looker, Google Cloud Next, Next Tokyo, Vertex AI Search, イベントレポート, コラム, データ分析高度化, データ利活用, 検索体験向上, 生成AI活用
【Next Tokyoレポート】主役は生成AI!GA360×生成AIの最新活用法を紹介 -
タグ: ASEAN展開, Direct Engine, インドネシア, オフショア開発, グローバル協業, コラム, ジャカルタ, スラバヤ, ビジネス熱気, ファンデザイン室, 出張レポート, 文化共存
【出張レポート】インドネシアで見た、熱気と未来への可能性|株式会社イー・エージェンシー公式note -
タグ: AI実証実験, AI高速処理, ECサイトパーソナライズ, Groq API, HTML自動生成, UX最適化, Web制作, コラム, リアルタイムAIパーソナライズ, 技術進化
【ウェブ制作】AIを使ってウェブサイトをリアルタイムにパーソナライズしてみたい!|株式会社イー・エージェンシー公式note