公開前サイトでも 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-AgentChrome-Lighthouseが含まれる場合は許可
  • または、社内のIPアドレス xxx.xxx.xxx.xxx からのアクセスは許可(もしあれば)
  • または、基本認証のユーザー名とパスワードを正しく入力したアクセスは許可

このアクセス制御を.htaccessに実装した例が以下です。



この方法はApacheモジュールmod_setenvifが必要です。もしかしたら追加インストールが必要かもしれません。

実際の例

実際に設定したサンプルページが以下です。

ブラウザからアクセスすると基本認証( test / test )が必要ですが、PageSpeed Insightsでは測定可能です。

これで「リリースしたらPageSpeedスコアが低かった!」という悲劇を防ぐため、サイトの公開前からPageSpeedスコアを細かくチェックできますね。

メール無料相談

お聞きになりたいことはありませんか? この記事の筆者 代表取締役 宮永 がまずはメールで疑問やお悩みを伺います! フォームよりお気軽にお寄せください。

  • PageSpeed Insightsのスコアを上げたい。
  • PageSpeed Insightsのスコアの目標を設定したい。
  • PageSpeed Insightsの採点ロジックを知りたい。

前へ前へ

iOS 14 パブリックベータでWebP対応を確認! 出し分けのためのpicture要素やAcceptヘッダは今まで通りで大丈夫?

次へ次へ

WebP変換を乗りこなそう! WebPパラメーターナビを公開。cwebpコマンドのパラメーターの効果を視覚的に比較