- 公開日:
公開前サイトでも PageSpeed Insights したい! リリース前から計測するためのWebサーバー設定テクニック (Apache編)
- Authors

- Name
- 代表取締役 宮永
認証付きサイトをPageSpeed Insightsできない問題
公開前のサイトは関係者以外に見られたくないので、基本認証やIPアドレスによるアクセス制限を設けます。
しかしその状態では PageSpeed Insights もスコアを計測できません。
URLに基本認証のユーザー名とパスワードを含める方法があります(例: `https://ユーザ名:パスワード@example.com`)。しかしPageSpeed Insightsで現在この方法は使えません。
代わりにChrome DevTools の Lighthouseタブ(旧Auditタブ)のPerformanceカテゴリを用いて計測できるのですが、他のメンバーと共有したり、時系列で比較しにくいことが難点です。
なぜならLighthouseタブでの計測はそのPCやネットワークの性能に左右されるため、環境やタイミングでスコアが異なるからです。上記のWebサービス版 PageSpeed Insights ともスコアに一貫性がありません。
「やっぱりサイトの公開前からお手軽でスコアが安定しやすい PageSpeed Insights で計測したいね」 ということで、関係者に加えて PageSpeed Insights からのアクセスだけこっそり許容するWebサーバーの設定テクニックを紹介します。
WebサーバーはApache 2.4以上、.htaccessへの記述を前提とします。nginxなどでも可能だと思います。そのうち研究して記事にします。
PageSpeed Insightsからのアクセスの判定方法
今のところPageSpeed Insightsからのアクセスを判定するヒントは、User-Agentリクエストヘッダとアクセス元のIPアドレス以外になさそうです。
User-AgentにはChrome-Lighthouseという文字列が含まれ、PageSpeed Insights (というよりGoogleのサービス全般?) からアクセスされるIPアドレスは Frequently Asked Questions | PageSpeed Service | Google Developers に案内があります。
ちなみに [GCP](https://cloud.google.com/?hl=ja)のインスタンスに割り当てられるIPはまた別のようです。もしGCPのインスタンスのIPアドレスもこの帯域も含まれるとセキュリティホールになりかねません。いくつかのリージョンでVMを立ててみましたが、上記のネットワークには該当しませんでした。
.htaccessの記述例
こんな風にアクセス制御します。
- GoogleのIPアドレスからのアクセスで、かつ、
User-AgentにChrome-Lighthouseが含まれる場合は許可 - または、社内のIPアドレス xxx.xxx.xxx.xxx からのアクセスは許可(もしあれば)
- または、基本認証のユーザー名とパスワードを正しく入力したアクセスは許可
このアクセス制御を.htaccessに実装した例が以下です。
この方法はApacheモジュールmod_setenvifが必要です。もしかしたら追加インストールが必要かもしれません。
実際の例
実際に設定したサンプルページが以下です。
ブラウザからアクセスすると基本認証( test / test )が必要ですが、PageSpeed Insightsでは測定可能です。
これで**「リリースしたらPageSpeedスコアが低かった!」**という悲劇を防ぐため、サイトの公開前からPageSpeedスコアを細かくチェックできますね。