[javascript] _gaq.push ([ ‘_ trackPageLoadTime’])는 어떻게 작동합니까?

Google Analytics 사이트 속도 기능,은 어떻게 _gaq.push(['_trackPageLoadTime'])작동합니까? 작동 방식에 대한 문서가 있습니까?



답변

편집 : 11 월 16 일 2011 년 바와 같이, 기능이 사용되지 않으며 그 기능은 기본 설정으로 설정하고있다 . (기능적으로 말하자면 옵트 인 기능에서 옵트 아웃 기능으로 바뀌 었습니다.)_trackPageLoadTime

_setSiteSpeedSampleRate이 기능에서 샘플 속도를 설정하는 새로운 기능입니다. 기본값은 1(1 %)입니다. 이 사이트 속도 기능을 사용하지 않으려면 0이 기능 에을 전달해야 합니다.

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

로부터 Google 웹 로그 분석 도움말 센터 :

이 보고서는 현재 Chrome, Internet Explorer 9 및 Google 툴바가 설치된 이전 버전의 Internet Explorer를 지원합니다. 보다 구체적으로 사이트 속도 보고서에는 HTML5 NavigationTiming 인터페이스를 지원하거나 Google Internet Explorer 툴바가 설치된 브라우저가 필요합니다.

따라서 이전의 여러 홈백 솔루션과 마찬가지로 페이지를로드하는 데 걸리는 시간을 파악하기 위해 자체 타이머를 구현하지 않습니다. 대신 현재 위에 나열된 경우에만 지원되는 NavigationTiming이라는 새로운 HTML5 기능을 사용합니다.

편집 : 이것은 이제 Firefox 7 에서 지원됩니다

(이 모든 부하에서 실행되지 않는 것이 중요합니다, 대신, 그것은 현재 페이지 뷰 2 %의 주위에 샘플이 구성되어 있지만 시도 방문의 10 %의 모든 페이지가로드를 추적하기 위해, 더 많은 브라우저가 NavigationTiming API를 지원로서, 총 샘플링 비율이 10 %에 가까워지기 시작할 것으로 예상 할 수 있습니다.)

이 인터페이스는 속성 (so, )을 사용하여 DOM 객체 window.performance(또는 이전 버전의 Chrome window.webkitPerformance) 에서 액세스됩니다 . 개체는 모든 주요 페이지로드 이벤트 시간의 측정 된 값을 저장하고 Google Analytics는 페이지로드 속도를 판단하기 위해 더 중요한 외부 값 2 개를 뺍니다.timingwindow.performance.timing

캐시가없는 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 일 이후의 epoch 밀리 초 또는 밀리 초입니다. 값을 생성하기 위해 빼는 값에 대한 문서는 보지 못했지만 ga.js 의 간단한 검사에서 다음과 같이 보입니다 loadEventStart-fetchStart.

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

위 샘플의 경우 이는 통화 에서 4.14 초기록함 을 의미합니다 _trackPageLoadTime.

W3C 탐색 타이밍 사양에서 :

fetchStart 속성

HTTP GET 또는 이와 동등한 것을 사용하여 새 리소스를 가져 오는 경우 fetchStart는 사용자 에이전트가 관련 애플리케이션 캐시 확인을 시작하기 직전에 시간을 반환해야합니다. 그렇지 않으면 사용자 에이전트가 리소스 가져 오기를 시작하는 시간을 반환해야합니다.

loadEventStart 속성

이 속성은 현재 문서의로드 이벤트가 시작되기 직전의 시간을 반환해야합니다. 로드 이벤트가 아직 시작되지 않은 경우 0을 반환해야합니다.

궁금한 파티의 경우 순서는 다음과 같습니다.

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

나열된 0 값의 경우 :

unloadEventStartunloadEventStart이전 페이지로드의 하역 시간을 보여 (그러나 해당 페이지는 현재와 같은 기원을 가지고있는 경우에만.)

redirectEndredirectStart페이지로드 체인에서 HTTP 리디렉트를 있었다면 레이턴시 추가 측정한다.

secureConnectionStart SSL 연결 시간을 측정하기위한 선택적 측정 인 것으로 보입니다.


답변