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
-
タグ: つながりの力, イー・エージェンシー, コラム, リモートワーク, 人材育成, 企業文化, 信頼と自主性, 働き方, 広報戦略, 未来のリーダー育成, 次世代経営, 社長インタビュー, 組織づくり, 経営哲学, 経営者の視点
リモートワークどうする?経営合宿で何を話してる?【甲斐社長に聞く 第1回】|株式会社イー・エージェンシー公式note -
タグ: ECサイト分析, GA4, Googleアナリティクス, Looker Studio, gmpプレミアムサロン, イー・エージェンシー, コラム, ダッシュボード作成, デジタル販売推進, データ可視化, データ活用トレーニング, ニトリ, マーケティング分析, 探索レポート, 業務効率化
株式会社ニトリ様 GA4・Looker Studioワークショップ開催事例 – データ活用への関心の高さを実感! -
タグ: AIアップデート, AIデザイン支援, AI活用事例, Claude比較, Gemini 2.5 Pro, Google Gemini, HTML生成, イー・エージェンシー, グラレコHTML, コラム, フロントエンド生成, プロンプト設計, 手書き風デザイン, 生成ai, 視覚化
猫よりAI 第5回:「Gemini 2.5 Pro、すごくない?」──グラレコHTML出力をClaudeから移植してみた話|公式note -
タグ: エンジニア募集, オウンドメディア, コラム, ビジネス職, リモートワーク, レコメンドエンジン, 中途採用, 働きやすい環境, 採用強化, 社内文化, 翻訳ツール
【オープン社内報 2025年6月号】イー・エージェンシー プレミアムニュース -
タグ: エンジニア採用, キャリア採用, コミュニケーション, コラム, ブログ, リモートワーク, ワーケーション, 文化, 環境
2025年6月の募集職種一覧!ビジネス職を中心に採用強化中!|株式会社イー・エージェンシー公式note -
有限会社シサム工房様:さぶみっと!レコメンドご利用事例