Bagaimana cara kerja _gaq.push (['_ trackPageLoadTime'])?

102

Bagaimana cara _gaq.push(['_trackPageLoadTime'])kerja fitur Kecepatan Situs Google Analytics ? Apakah ada dokumentasi tentang cara kerjanya?

ilhan
sumber
2
@ stuken.yuri itulah sintaks untuk panggilan Asinkron Google Analytics. Ini pada dasarnya berarti: tambahkan fungsi (nama) _trackPageLoadTimeke antrean, lalu aktifkan semua fungsi dalam antrean tersebut secara berurutan setelah ga.js dimuat. Ini memungkinkan Anda memuat secara aman secara ga.jsasinkron.
Yahel

Jawaban:

181

Mengedit : Per 16 November 2011, yang _trackPageLoadTimefungsi telah usang dan fungsionalitas telah ditetapkan sebagai pengaturan default . (Secara fungsional, ini telah berubah dari fitur opt-in menjadi fitur opt-out.)

_setSiteSpeedSampleRateadalah fungsi baru untuk mengatur laju sampel pada fitur ini; nilai defaultnya adalah 1(seperti dalam 1%). Untuk memilih tidak menggunakan fitur Kecepatan Situs ini, Anda harus meneruskan 0ke fungsi ini:

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

Dari Pusat Bantuan Google Analytics :

Laporan ini sekarang mendukung browser berikut: Chrome, Internet Explorer 9 dan versi Internet Explorer sebelumnya dengan Google Toolbar terpasang. Lebih khusus lagi, laporan Kecepatan Situs memerlukan browser yang mendukung antarmuka Waktu Navigasi HTML5 atau telah memasang bilah alat Google Internet Explorer

Jadi, itu tidak menerapkan pengatur waktunya sendiri, seperti banyak solusi rumah sebelumnya, untuk mencari tahu berapa lama waktu yang dibutuhkan untuk memuat halaman. Sebagai gantinya, ia menggunakan fitur HTML5 baru, yang saat ini hanya didukung dalam kasus yang tercantum di atas, yang disebut NavigationTiming.

EDIT : Ini sekarang didukung di Firefox 7

(Penting untuk diperhatikan bahwa ini tidak berjalan pada setiap pemuatan; sebagai gantinya, saat ini mengambil sampel sekitar 2% dari tayangan laman, meskipun dikonfigurasi untuk mencoba melacak semua pemuatan laman pada 10% kunjungan; karena lebih banyak browser mendukung API Waktu Navigasi, Anda dapat mengharapkan persentase total sampel mulai mendekati 10%.)

Antarmuka ini diakses di bawah objek DOM window.performance(atau, di versi Chrome sebelumnya, window.webkitPerformance), menggunakan timingatribut (so, window.performance.timing). Objek menyimpan nilai terukur dari semua waktu peristiwa pemuatan halaman utama, dan Google Analytics mengurangi 2 nilai terluar yang lebih penting untuk menilai kecepatan pemuatan halaman.

Untuk memuat Mashable.com tanpa cache, berikut adalah contoh yang diukurnya (di 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
}

Angka-angka itu adalah epoch milidetik, atau milidetik sejak 1 Januari 1970. Saya belum melihat dokumentasi tentang nilai mana yang mereka kurangi untuk menghasilkan nilainya, tetapi dari pemeriksaan sepintas ga.js , sepertinya itu adalah loadEventStart-fetchStart:

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

Untuk contoh di atas, itu berarti akan merekam 4,14 detik dalam _trackPageLoadTimepanggilan.

Dari spesifikasi Waktu Navigasi W3C:

fetchStart

Jika sumber daya baru akan diambil menggunakan HTTP GET atau yang setara, fetchStart harus mengembalikan waktu tepat sebelum agen pengguna mulai memeriksa cache aplikasi apa pun yang relevan. Jika tidak, ini harus mengembalikan waktu ketika agen pengguna mulai mengambil sumber daya.

loadEventStart

Atribut ini harus mengembalikan waktu segera sebelum peristiwa pemuatan dokumen saat ini diaktifkan. Itu harus mengembalikan nol ketika peristiwa pemuatan belum diaktifkan.

Bagi pihak yang penasaran, urutannya tampaknya sebagai berikut:

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

Untuk 0 nilai yang terdaftar:

unloadEventStartdan unloadEventStartmenunjukkan waktu pembongkaran pemuatan halaman sebelumnya (tetapi hanya jika halaman tersebut memiliki asal yang sama dengan halaman saat ini.)

redirectEnddan redirectStartmengukur latensi yang ditambahkan jika ada pengalihan HTTP di rantai pemuatan halaman.

secureConnectionStart tampaknya merupakan pengukuran opsional untuk mengukur waktu koneksi SSL.

Yahel
sumber
6
Anda pria rock, serius. Terima kasih atas tanggapan yang begitu rumit.
Sid
secureConnectionStartadalah ukuran standar, tetapi opsional untuk browser (atau apa pun yang menangani konten) untuk melaporkan. w3c-test.org/webperf/specs/NavigationTiming/…
Eric