公開前サイトでも PageSpeed Insights したい! リリース前から計測するためのWebサーバー設定テクニック (Apache編)
認証付きサイトをPageSpeed Insightsできない問題
公開前のサイトは関係者以外に見られたくないので、基本認証やIPアドレスによるアクセス制限を設けます。
しかしその状態では PageSpeed Insights もスコアを計測できません。
URLに基本認証のユーザー名とパスワードを含める方法があります(例: `http://ユーザ名:パスワード@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スコアを細かくチェックできますね。
メール無料相談
お聞きになりたいことはありませんか? この記事の筆者 代表取締役 宮永 がまずはメールで疑問やお悩みを伺います! フォームよりお気軽にお寄せください。
- PageSpeed Insightsのスコアを上げたい。
- PageSpeed Insightsのスコアの目標を設定したい。
- PageSpeed Insightsの採点ロジックを知りたい。
フォローしませんか?