_Gaq.push (['_ trackPageLoadTime']) hoạt động như thế nào?


102

Tính năng Tốc độ trang web của Google Analytics _gaq.push(['_trackPageLoadTime'])hoạt động như thế nào? Có tài liệu nào về cách nó hoạt động không?


2
@ stuken.yuri đó là cú pháp của lệnh gọi Không đồng bộ Google Analytics. Về cơ bản, nó có nghĩa là: thêm hàm (tên) _trackPageLoadTimevào một hàng đợi, rồi kích hoạt tất cả các hàm trong hàng đợi đó tuần tự sau khi ga.js đã tải xong. Nó cho phép bạn tải ga.jskhông đồng bộ một cách an toàn .
Yahel

Câu trả lời:


181

Chỉnh sửa : Tính đến ngày 16 Tháng 11 2011, các _trackPageLoadTimechức năng đã được tán thành và chức năng của nó đã được thiết lập như một thiết lập mặc định . (Nói về mặt chức năng, nó đã chuyển từ một tính năng chọn tham gia thành một tính năng chọn không tham gia.)

_setSiteSpeedSampleRatelà chức năng mới để đặt tỷ lệ mẫu trên tính năng này; giá trị mặc định của nó là 1(như 1%). Để chọn không sử dụng tính năng Tốc độ trang web này, bạn phải chuyển một 0vào chức năng này:

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

Từ Trung tâm trợ giúp Google Analytics :

Báo cáo này hiện hỗ trợ các trình duyệt sau: Chrome, Internet Explorer 9 và các phiên bản trước của Internet Explorer có cài đặt Thanh công cụ của Google. Cụ thể hơn, báo cáo Tốc độ trang web yêu cầu các trình duyệt hỗ trợ giao diện HTML5 NavigationTiming hoặc đã cài đặt thanh công cụ của Google Internet Explorer

Vì vậy, nó không triển khai bộ đếm thời gian của riêng mình, giống như nhiều giải pháp homeback trước đây, để tìm ra thời gian tải một trang. Thay vào đó, nó sử dụng một tính năng HTML5 mới, hiện chỉ được hỗ trợ trong các trường hợp được liệt kê ở trên, được gọi là NavigationTiming.

CHỈNH SỬA : Tính năng này hiện đã được hỗ trợ trong Firefox 7

(Điều quan trọng cần lưu ý là nó không chạy trên mọi lần tải; thay vào đó, nó hiện lấy mẫu khoảng 2% số lần xem trang, mặc dù nó được định cấu hình để cố gắng theo dõi tất cả các lần tải trang trên 10% số lượt truy cập; vì nhiều trình duyệt hơn hỗ trợ API NavigationTiming, bạn có thể mong đợi tổng phần trăm được lấy mẫu bắt đầu tiến gần hơn đến 10%.)

Giao diện này được truy cập trong đối tượng DOM window.performance(hoặc, trong các phiên bản Chrome trước đó, window.webkitPerformance), sử dụng timingthuộc tính (so, window.performance.timing). Đối tượng lưu trữ các giá trị đo được của tất cả thời gian sự kiện tải trang chính và Google Analytics trừ 2 trong số các giá trị bên ngoài quan trọng hơn để đánh giá tốc độ tải trang.

Đối với tải Mashable.com không có bộ nhớ cache, đây là ví dụ về những gì nó đo lường (trong 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
}

Những con số đó là epoch mili giây hoặc mili giây kể từ ngày 1 tháng 1 năm 1970. Tôi chưa thấy bất kỳ tài liệu nào về những giá trị nào chúng trừ đi để tạo ra giá trị của chúng, nhưng từ việc kiểm tra sơ qua ga.js , có vẻ như loadEventStart-fetchStart:

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

Đối với mẫu trên, điều đó có nghĩa là nó sẽ ghi lại 4,14 giây trong _trackPageLoadTimecuộc gọi.

Từ thông số thời gian điều hướng W3C:

thuộc tính fetchStart

Nếu tài nguyên mới được tìm nạp bằng HTTP GET hoặc tương đương, fetchStart phải trả lại thời gian ngay lập tức trước khi tác nhân người dùng bắt đầu kiểm tra bất kỳ bộ đệm ứng dụng có liên quan nào. Nếu không, nó phải trả về thời gian khi tác nhân người dùng bắt đầu tìm nạp tài nguyên.

thuộc tính loadEventStart

Thuộc tính này phải trả về thời gian ngay trước khi sự kiện tải của tài liệu hiện tại được kích hoạt. Nó phải trả về 0 khi sự kiện tải chưa được kích hoạt.

Đối với những người tò mò, thứ tự có vẻ như sau:

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

Đối với 0 giá trị được liệt kê:

unloadEventStartunloadEventStarthiển thị thời gian tải trang trước đó (nhưng chỉ khi trang đó có cùng nguồn gốc với trang hiện tại.)

redirectEndredirectStartđo độ trễ được thêm vào nếu có chuyển hướng HTTP trong chuỗi tải trang.

secureConnectionStart dường như là một phép đo tùy chọn để đo thời gian kết nối SSL.


6
Bạn rock dude, nghiêm túc. Cảm ơn vì một câu trả lời công phu như vậy.
Sid

secureConnectionStartlà một mesurement tiêu chuẩn, nhưng nó là tùy chọn để trình duyệt (hoặc bất cứ thứ gì xử lý nội dung) báo cáo. w3c-test.org/webperf/specs/NavigationTiming/…
Eric
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.