PingdomやGTmetrixでレンタルサーバーの性能を評価しても意味がありません

PingdomやGTmetrixをレンタルサーバーの評価に利用している記事をよく見かけますが、ほとんど意味がありません。海外と国内のレンタルサーバーを比較して、「海外サーバーの方が読み込み時間が短いから優秀です」というブログも稀にみかけます。PingdomとGTmetrixは海外のデータセンターで運用されているので、単純にネットワーク距離 (速度) が海外のレンタルサーバーに有利なだけです。

どちらもWebサイト (正確には一つのWebページ) そのものの構成や品質を評価するサービスであり、そのサイトが稼働しているレンタルサーバーの性能とはほとんど関係がありません。

それでは、それぞれのサービスが何を基に評価しているのかを確認して、実際に異なるレンタルサーバーで測定してみましょう。

Pingdom

Pingdomの紹介が目的ではないので、説明は簡単なものです。

Pingdom  
Minimize request size CookieやHTTPリクエストのサイズの最小化。
Avoid bad requests 無効なURL。
Leverage browser caching Webブラウザのキャッシュを適用する。Expires (mod_expires) や Cache-Control (mod_headers)を利用します。
Minimize redirects リダイレクトを最小限に抑える。
Remove query strings from static resources キャッシュに影響する静的リソースのURLからクエリ文字列を削除する。
Serve static content
from a cookieless domain
画像やCSSなど、クッキー不要の静的なコンテンツを別ドメインに配備する。
Combine external JavaScript
Combine external CSS
同じドメインにあるJavaScriptやCSSを適切な数にまとめる。
Minimize DNS lookups DNS lookupの回数を減らすために、アクセスするホスト (ドメイン) を少なくします。Parallelize downloads across hostnamesと相反する要素です。
Parallelize downloads across hostnames ブラウザの同一ドメインに対する同時接続数は6 (ブラウザで異なる) です。複数のドメインにファイルを分散させることで、読み込み時間を高速化できます。Minimize DNS lookupsと相反する要素です。
Specify a cache validator ブラウザやプロキシサーバーに対するキャッシュの指定。
Specify a Vary: Accept-Encoding header ブラウザやプロキシサーバーに対するデータ形式 (gzip等) の指定。

ほとんどの項目がレンタルサーバーの性能とは関係ありません。キャッシュなどレンタルサーバーにより設定が異なるものもありますが、ほとんどはユーザー自身で編集可能なものです。

それでは、国内と海外のレンタルサーバーに、全く同じ構成のサイトを用意して測定してみましょう。

同じサイトを設置した国内と海外のレンタルサーバーの比較

後述する幾つかのプラグインをインストールしていますが、ほぼ初期状態のWordPressを利用します。中身のないタイトルだけの記事を測定対象とします。

測定対象のレンタルサーバーとその所在地は下記の通りです。

  • 国内サーバー
    • ロリポップ! / Tokyo, Japan
  • 海外サーバー
    • JETBOY / Columbus, Ohaio, USA

Pingdomは6つのデータセンターで稼働しており、測定時に選択できます。

測定地
Stockholm, Sweden / Melbourne, Australia / San Jose, California, USA / Dallas, Texas, USA / New York City, New York, USA / Amsterdam, Netherlands

ロリポップ!の測定結果

どの測定地から実行しても Perf. grade ( Page Speed Performance grade) は 88 です。同じページを測定しているので、当然ですが同じスコアとなります。変動するのは、Load time (読み込み時間) のみです。

各測定地とロリポップ!との位置関係を示します。地図にマッピングしているので分かりやすいと思いますが、読み込み時間は単純にネットワーク距離に比例しているだけです。もちろんネットワーク性能も影響しますが、距離が長くなるほど遅延 (ルーター等による) が大きくなります。

JETBOYの測定結果

JETBOYは海外のデータセンターで運用されており、サーバー自体も全く異なるものですが、Perf. gradeは 88 となりロリポップ!と同じスコアです。

この結果は、Pingdomでレンタルサーバーの性能を測定できないことを示しています。

読み込み時間を比較すると、メルボルンを除きJETBOYの読み込み時間が短いことが分かります。測定地との距離が JETBOY < ロリポップ! なので妥当な結果です。

これまでの説明や測定結果から、「JETBOYの方が読み込み時間が短いのでロリポップ!より優秀です」とは言えないでしょう。どちらも単純にデータセンターに近い訪問者 (アクセス元) ほどレスポンスが良くなるということです。

GTmetrix

では、GTmetrixはどうでしょうか?

GTmetrixでは、PageSpeedとYSlowによるWebページの評価を行えます。

こちらもGTmetrixの紹介が目的ではないので、各項目の説明は簡単なものとします。

PageSpeed  
Inline small JavaScript 小さな (数行程度の) JavaScriptをインライン化する。
Minify CSS, Minify JavaScript, Minify HTML HTML、JavaScript、CSSの最小化 (最適化)。
Defer parsing of JavaScript JavaScript解析の遅延化。
Avoid bad requests 無効なURL。
Avoid a character set in the meta tag HTTPレスポンスヘッダで文字コードを指定する。
Avoid landing page redirects ランディングページの無駄なリダイレクトを避ける。
Enable gzip compression gzip圧縮を有効にする。
Enable Keep-Alive キープアライブを有効にする。
Inline small CSS 小さな (数行程度の) CSSをインライン化する。
Leverage browser caching Webブラウザのキャッシュを適用する。Expires (mod_expires) や Cache-Control (mod_headers)を利用する。
Minimize redirects リダイレクトを最小限とする。
Minimize request size CookieやHTTPリクエストのサイズを最小限とする。
Optimize images 画像を最適化する。
Optimize the order of styles and scripts CSSとJavaScriptの読み込み順序を最適化する。
Put CSS in the document head ヘッダー内でCSSを読み込む。
Remove query strings from static resources キャッシュに影響する静的リソースのURLからクエリ文字列を削除する。
Serve resources from a consistent URL URLの正規化。
Serve scaled images 画像サイズの最適化。
Specify a cache validator キャッシュ制御の指定。
Specify a Vary: Accept-Encoding header gzip等の指定。
Specify a character set early 文字セットの指定を優先する (ソースの最上部に設置する)。
Specify image dimensions 画像サイズを指定する (widthとheight)。
Avoid CSS @import CSSの@importの使用を抑える。
Combine images using CSS sprites CSSスプライトにより複数の画像 (ロゴやアイコンなど) をまとめる。
Prefer asynchronous resources 非同期リソースを採用する (ブロッキング処理を削減する)。

サーバー性能に関係があるとすれば、Enable gzip compressionEnable Keep-Alive でしょうか。

KeepAliveはほとんどのサービスで (設定値は非公開ですが) 有効となっています。gzip (コンテンツの圧縮)については事業者の設定次第なので、利用できるかどうかは確認する必要があります。

レンタルサーバーを変更することで、これらの値は変化するかもしれません。しかし、それはレンタルサーバーの性能 (というより仕様) のほんの一部であり、大幅にレスポンス性能を向上させるものではありません。

それでは、YSlowの評価項目を簡単に説明しましょう。

YSlow  
Use a Content Delivery Network (CDN) CloudFlareなどのCDNを利用する。
Make fewer HTTP requests HTTPリクエスト数を減らす。
Avoid empty src or href 空のsrcやhrefを控える。空であってもアクセス処理が実行されます。
Add Expires headers mod_expiresによるキャッシュの設定。
Compress components with gzip コンテンツのgzip圧縮。
Minify JavaScript and CSS JavaScriptとCSSの最小化 (最適化)。
Avoid URL redirects 余計なリダイレクトを避ける。
Make AJAX cacheable Ajaxのキャッシュを利用する。
Put CSS at the top CSSをヘッダ内で読み込む。
Remove duplicate JavaScript and CSS 重複したJavaScriptやCSSを削除する。
Put JavaScript at bottom JavaScriptをソースの最後に配備する。
Avoid AlphaImageLoader filter 「AlphaImageLoaderフィルタ」の使用を避ける。
Avoid HTTP 404 (Not Found) error 404エラーの排除。
Reduce the number of DOM elements DOM要素 (タグ) の数を減らす。
Do not scale images in HTML CSS等で画像サイズを調整しない。適切なサイズを用意する。
Use cookie-free domains 画像など、クッキー不要の静的なコンテンツを別ドメイン配備する。
Use GET for AJAX requests Ajaxのリクエストに GET を利用する。
Avoid CSS expressions 「CSS expressions」 の使用を避ける。
Reduce DNS lookups DNS lookupの回数を減らすために、アクセスするホスト (ドメイン) を少なくする。
Reduce cookie size クッキーのサイズを減らす。
Make favicon small and cacheable faviconを適切なサイズにして、キャッシュ対象とする。
Configure entity tags (ETags) 「ETags」を設定する。ブラウザとサーバー間でのキャッシュ管理に影響します。
Make JavaScript and CSS external JavaScriptとCSSを外部ファイルとする。

こちらも関係がありそうな項目は Compress components with gzip 程度です。

GTmetrixの測定結果

GTmetrixのサービスは、7カ国16サーバーで運用されています。有料版であれば測定地を変更することができます。今回の測定は無料版なので、測定地はカナダのバンクーバーとなります。

全く同じWebページなので、測定地が異なってもスコア (PageSpeed Score、YSlow Score) は同じです。Pingdomと同様にサーバー (レンタルサーバー) の性能は無関係であることが分かります。

読み込み時間 (Page Load Time) は、単純にネットワーク距離の差であることが分かります。

WordPressの調整

全く同じサイトであっても、サーバーの設定によりヘッダー等の出力が異なります。サーバー性能とは関係のない、測定結果に影響を与える出力についてはプラグイン等で調整しています。レンタルサーバーの仕様にもよりますが、これらの設定を行うことで誰でも同じ結果が出せるでしょう。

  • アバター
    • gravatarへのアクセスを無効化するために、「設定 > ディスカッション > アバター無効」とする。
  • Google Font
    • Googleへのアクセスを無効化するために、以下のプラグインを利用。
    • Disable Google Fonts
  • Remove query strings from static resources 対応
    • WordPressでは外部ファイルのURLに、クエリ文字列が自動的に付与されます。以下のプラグインを利用してクエリ文字列を削除します。
    • Remove query strings from static resources
  • Leverage browser caching 対応
    • キャッシュ設定の出力が異なるため、以下のプラグインを利用して統一。
    • W3 Total Cache (Set expires header)

プラグインを利用した項目については、手動でも対応可能です。

まとめ

これらのサービスはWebサイト (ページ) の構成や品質を測定するには非常に有用なものです。しかし、サーバーの性能を測定するものではありません。

レンタルサーバーを引っ越しして再測定すると、確かにスコアが (良くも悪くも) 変わることがあるでしょう。しかし、それらの変化はサイトの修正やサーバーの設定で簡単に元のスコアに戻すことができます。あくまでもヘッダー等の出力が少し変化しただけであり、レンタルサーバーの性能には何も関係ありません。

読み込み時間の比較であれば意味があるかもしれませんが、海外サーバーからの測定であることに注意する必要があります。読み込み時間に与える影響の度合いは ネットワーク遅延 > サーバー性能 となり、サーバーの性能差がよほど大きくない限り明確な変化を確認することはできないでしょう。また、ばらつきが大きいため数回の測定では意味がありません。

PingdomやGTmetrixなどの測定結果を利用してレンタルサーバーを紹介してるサイトの内容は、あまり鵜呑みにしないほうがよいでしょう。


更新履歴  
2016年04月24日 地図データをGoogle Mapsに変更しました。