web-dev-qa-db-ja.com

_gaq.Push(['_ trackPageLoadTime'])はどのように機能しますか?

Googleアナリティクスのサイト速度機能_gaq.Push(['_trackPageLoadTime'])はどのように機能しますか?仕組みについてのドキュメントはありますか?

102
ilhan

Edit:2011年11月16日現在、 _trackPageLoadTime関数は廃止され、その機能はデフォルト設定として設定されています 。 (機能的に言​​えば、オプトイン機能からオプトアウト機能になりました。)

_setSiteSpeedSampleRateは、この機能のサンプルレートを設定するための新しい関数です。デフォルト値は1(1%など)です。このサイト速度機能の使用をオプトアウトするには、0をこの関数に渡す必要があります。

_gaq.Push(["_setSiteSpeedSampleRate", 0]);

Google Analyticsヘルプセンター から:

このレポートは現在、Chrome、Internet Explorer 9、およびGoogleツールバーがインストールされている以前のバージョンのInternet Explorerをサポートしています。より具体的には、Site Speedレポートには、HTML5 NavigationTimingインターフェイスをサポートするか、Google Internet Explorerツールバーがインストールされているブラウザーが必要です。

そのため、多くの以前のホームバックソリューションが持っていたように、ページの読み込みにかかる時間を把握するために、独自のタイマーを実装していません。代わりに、NavigationTimingと呼ばれる上記のケースでのみ現在サポートされている新しいHTML5機能を使用します。

[〜#〜] edit [〜#〜]:これは Firefox 7 でサポートされるようになりました

(すべてのロードで実行されるわけではないことに注意してください;代わりに、現在10%のすべてのページロードを追跡するようにtryに設定されていますが、ページビューの約2%をサンプリングしています訪問の割合。NavigationTimingAPIをサポートするブラウザが増えるにつれて、サンプリングされた合計の割合が10%に近づくことが予想されます。

このインターフェイスは、timing属性(window.performance)を使用して、DOMオブジェクトwindow.webkitPerformance(または以前のバージョンのChromeではwindow.performance.timing)の下でアクセスされます。このオブジェクトには、すべての主要なページロードイベント時間の測定値が格納され、Googleアナリティクスはより重要な2つの外部値を差し引いてページのロード速度を判断します。

キャッシュなしのMashable.comのロードの場合、測定値の例(Chrome 11):

timing = {
  connectEnd: 1306677079337,
  connectStart: 1306677079337,
  domComplete: 1306677083482,
  domContentLoadedEventEnd: 1306677081765,
  domContentLoadedEventStart: 1306677081576,
  domInteractive: 1306677081576,
  domLoading: 1306677079478,
  domainLookupEnd: 1306677079337,
  domainLookupStart: 1306677079337,
  fetchStart: 1306677079337,
  loadEventEnd: 1306677083483,
  loadEventStart: 1306677083482,
  navigationStart: 1306677079337,
  redirectEnd: 0,
  redirectStart: 0,
  requestStart: 1306677079394,
  responseEnd: 1306677079669,
  responseStart: 1306677079476,
  secureConnectionStart: 0,
  unloadEventEnd: 0,
  unloadEventStart: 0
}

これらの数値は、エポックミリ秒、または1970年1月1日以降のミリ秒です。値を生成するためにどの値を減算するかについてのドキュメントは見ていませんが、 ga.js の大まかな検査からloadEventStart-fetchStartのように見えます:

h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);

上記のサンプルでは、​​_trackPageLoadTime呼び出しで4.14秒を記録します。

W3Cナビゲーションタイミング仕様から:

fetchStart属性

HTTP GETまたは同等のものを使用して新しいリソースを取得する場合、fetchStartは、ユーザーエージェントが関連するアプリケーションキャッシュのチェックを開始する直前の時間を返す必要があります。それ以外の場合、ユーザーエージェントがリソースの取得を開始する時間を返す必要があります。

loadEventStart属性

この属性は、現在のドキュメントのロードイベントが発生する直前の時間を返す必要があります。ロードイベントがまだ発生していない場合は、ゼロを返す必要があります。

好奇心の強いパーティーの場合、順序は次のようになります。

connectStart、connectEnd、domainLookupStart、domainLookupEnd、fetchStart、navigationStart、requestStart、responseStart、domLoading、responseEnd、domContentLoadedEventStart、domInteractive、domContentLoadedEventEnd、domComplete、loadEventStart、loadEventEnd

リストされている0の値の場合:

unloadEventStartおよびunloadEventStartは、前のページの読み込みのアンロードの時間を示します(ただし、そのページが現在のページと同じOriginを持っている場合のみ)。

redirectEndおよびredirectStartは、ページのロードチェーンにHTTPリダイレクトがあった場合に追加されるレイテンシを測定します。

secureConnectionStartは、SSL接続時間を測定するためのオプションの測定値のようです。

181
Yahel