PingdomやGTmetrixをレンタルサーバーの評価に利用している記事をよく見かけますが、ほとんど意味がありません。海外と国内のレンタルサーバーを比較して、「海外サーバーの方が読み込み時間が短いから優秀です」というブログも稀にみかけます。PingdomとGTmetrixは海外のデータセンターで運用されているので、単純にネットワーク距離 (速度) が海外のレンタルサーバーに有利なだけです。
どちらもWebサイト (正確には一つのWebページ) そのものの構成や品質を評価するサービスであり、そのサイトが稼働しているレンタルサーバーの性能とはほとんど関係がありません。
それでは、それぞれのサービスが何を基に評価しているのかを確認して、実際に異なるレンタルサーバーで測定してみましょう。
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を利用します。中身のないタイトルだけの記事を測定対象とします。
測定対象のレンタルサーバーとその所在地は下記の通りです。
Pingdomは6つのデータセンターで稼働しており、測定時に選択できます。
どの測定地から実行しても Perf. grade ( Page Speed Performance grade) は 88 です。同じページを測定しているので、当然ですが同じスコアとなります。変動するのは、Load time (読み込み時間) のみです。
各測定地とロリポップ!との位置関係を示します。地図にマッピングしているので分かりやすいと思いますが、読み込み時間は単純にネットワーク距離に比例しているだけです。もちろんネットワーク性能も影響しますが、距離が長くなるほど遅延 (ルーター等による) が大きくなります。
JETBOYは海外のデータセンターで運用されており、サーバー自体も全く異なるものですが、Perf. gradeは 88 となりロリポップ!と同じスコアです。
この結果は、Pingdomでレンタルサーバーの性能を測定できないことを示しています。
読み込み時間を比較すると、メルボルンを除きJETBOYの読み込み時間が短いことが分かります。測定地との距離が JETBOY < ロリポップ!
なので妥当な結果です。
これまでの説明や測定結果から、「JETBOYの方が読み込み時間が短いのでロリポップ!より優秀です」とは言えないでしょう。どちらも単純にデータセンターに近い訪問者 (アクセス元) ほどレスポンスが良くなるということです。
では、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 compression
と Enable 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のサービスは、7カ国16サーバーで運用されています。有料版であれば測定地を変更することができます。今回の測定は無料版なので、測定地はカナダのバンクーバーとなります。
全く同じWebページなので、測定地が異なってもスコア (PageSpeed Score、YSlow Score) は同じです。Pingdomと同様にサーバー (レンタルサーバー) の性能は無関係であることが分かります。
読み込み時間 (Page Load Time) は、単純にネットワーク距離の差であることが分かります。
全く同じサイトであっても、サーバーの設定によりヘッダー等の出力が異なります。サーバー性能とは関係のない、測定結果に影響を与える出力についてはプラグイン等で調整しています。レンタルサーバーの仕様にもよりますが、これらの設定を行うことで誰でも同じ結果が出せるでしょう。
プラグインを利用した項目については、手動でも対応可能です。
これらのサービスはWebサイト (ページ) の構成や品質を測定するには非常に有用なものです。しかし、サーバーの性能を測定するものではありません。
レンタルサーバーを引っ越しして再測定すると、確かにスコアが (良くも悪くも) 変わることがあるでしょう。しかし、それらの変化はサイトの修正やサーバーの設定で簡単に元のスコアに戻すことができます。あくまでもヘッダー等の出力が少し変化しただけであり、レンタルサーバーの性能には何も関係ありません。
読み込み時間の比較であれば意味があるかもしれませんが、海外サーバーからの測定であることに注意する必要があります。読み込み時間に与える影響の度合いは ネットワーク遅延 > サーバー性能
となり、サーバーの性能差がよほど大きくない限り明確な変化を確認することはできないでしょう。また、ばらつきが大きいため数回の測定では意味がありません。
PingdomやGTmetrixなどの測定結果を利用してレンタルサーバーを紹介してるサイトの内容は、あまり鵜呑みにしないほうがよいでしょう。
更新履歴 | |
---|---|
2016年04月24日 | 地図データをGoogle Mapsに変更しました。 |