Dokumen ini memberikan panduan komprehensif tentang cara menggunakan metode _trackTiming
.
Pengantar
Studi menunjukkan bahwa mengurangi waktu pemuatan halaman meningkatkan pengalaman pengguna situs secara keseluruhan. Google Analytics memiliki sejumlah laporan andal yang otomatis melacak waktu muat halaman. Namun, bagaimana jika Anda ingin melacak waktu yang diperlukan untuk memuat resource tertentu?
Misalnya, apakah pemuatan library JavaScript populer memerlukan waktu terlalu lama, sehingga mengurangi pengalaman situs untuk pengguna tertentu?
Waktu pengguna memungkinkan Anda menjawab pertanyaan ini dengan menyediakan cara native untuk melacak jangka waktu di Google Analytics.
Untuk melihat contoh yang berfungsi, lihat kode contoh Waktu Pengguna.
Menyiapkan Waktu Pengguna
Untuk mengumpulkan data waktu pengguna, Anda harus menggunakan metode _trackTiming
, yang mengirimkan data waktu ke Google Analytics.
_gaq.push([‘_trackTiming’, category, variable, time, opt_label, opt_sample]);
Tempat parameter mewakili:
Parameter | Nilai | Wajib | Ringkasan |
---|---|---|---|
category |
string |
ya | String untuk mengelompokkan semua variabel waktu pengguna ke dalam grup logis untuk tujuan pelaporan yang lebih mudah.
Misalnya, Anda dapat menggunakan nilai jQuery jika Anda melacak waktu yang diperlukan untuk memuat library JavaScript tertentu. |
variable |
string |
ya | String untuk menunjukkan nama
tindakan resource yang dilacak. Misalnya, Anda dapat menggunakan nilai JavaScript Load jika ingin melacak waktu yang diperlukan untuk memuat library JavaScript jQuery. Perhatikan bahwa variabel yang sama dapat digunakan di beberapa kategori guna melacak waktu untuk peristiwa yang umum untuk kategori ini seperti Javascript Load dan Page Ready Time , dll. |
time |
number |
ya | Jumlah waktu berlalu dalam milidetik untuk dilaporkan ke Google Analytics. Jika library jQuery memerlukan waktu 20 milidetik untuk dimuat, Anda harus mengirimkan nilai 20 . |
opt_label |
string |
no | String yang dapat digunakan untuk menambah
fleksibilitas dalam memvisualisasikan waktu pengguna dalam laporan. Label juga dapat
digunakan untuk berfokus pada berbagai subeksperimen untuk kombinasi kategori dan
variabel yang sama. Misalnya, jika kita memuat jQuery dari Jaringan Penayangan Konten Google, kami akan menggunakan nilai Google CDN . |
opt_sampleRate |
number |
no | Angka untuk secara manual
mengganti persentase pengunjung yang hit waktunya dikirim ke Google Analytics.
Jumlah default ditetapkan pada jumlah yang sama dengan pengumpulan data kecepatan situs umum
dan didasarkan pada persentase pengunjung. Jadi, jika Anda ingin melacak
hit _trackTiming untuk 100% pengunjung, Anda harus menggunakan nilai 100 .
Perhatikan bahwa setiap hit dihitung terhadap batas umum 500 hit per sesi. |
Waktu Pelacakan yang Dihabiskan
Saat menggunakan metode _trackTiming
, Anda menentukan jumlah waktu yang dihabiskan dalam milidetik dalam parameter time
. Jadi terserah Anda, sebagai developer, untuk menulis kode yang akan mencatat periode waktu ini. Cara termudah untuk melakukannya adalah dengan membuat stempel waktu di awal periode dan membuat stempel waktu lain di akhir periode. Kemudian Anda dapat
mencatat selisih kedua stempel waktu tersebut untuk mendapatkan waktu yang dihabiskan.
Berikut contohnya yang sederhana:
var startTime = new Date().getTime(); setTimeout(myCallback, 200); function myCallback(event) { var endTime = new Date().getTime(); var timeSpent = endTime - startTime; _gaq.push(['_trackTiming', 'Test', 'callback_timeout', timeSpent, 'animation']); }
Stempel waktu awal diambil dengan membuat objek Date
baru dan mendapatkan waktu dalam milidetik. Selanjutnya, fungsi setTimeout
digunakan untuk memanggil fungsi myCallback
dalam 200
milidetik. Setelah fungsi callback dieksekusi, stempel waktu endTime
diambil dengan membuat objek Date
baru. Kemudian,
selisih waktu berakhir dan mulai dihitung untuk mendapatkan waktu yang dihabiskan.
Waktu terakhir yang dihabiskan akan dikirim ke Google Analytics.
Contoh ini sepele, tetapi menggambarkan konsep cara melacak waktu. Mari lihat contoh yang lebih realistis.
Waktu Pelacakan yang Dihabiskan untuk Memuat Resource JavaScript
Saat ini, banyak situs menyertakan library JavaScript pihak ketiga atau meminta data melalui objek JSON. Meskipun situs Anda dapat memuat resource ini dengan cepat di rumah, resource yang sama mungkin dimuat dengan sangat lambat bagi pengguna di negara lain. Resource pemuatan yang lambat ini dapat menurunkan pengalaman situs bagi pengguna internasional.
Fitur pengaturan waktu pengguna kecepatan situs dapat membantu Anda mengumpulkan dan melaporkan waktu yang dibutuhkan untuk memuat resource ini.
Berikut adalah contoh sederhana yang menunjukkan cara melacak waktu yang dihabiskan suatu fungsi yang memuat resource JavaScript secara asinkron:
var startTime; function loadJs(url, callback) { var js = document.createElement('script'); js.async = true; js.src = url; var s = document.getElementsByTagName('script')[0]; js.onload = callback; startTime = new Date().getTime(); s.parentNode.insertBefore(js, s); } function myCallback(event) { var endTime = new Date().getTime(); var timeSpent = endTime - startTime; _gaq.push(['_trackTiming', 'jQuery', 'Load Library', timeSpent, 'Google CDN']); // Library has loaded. Now you can use it. };
Perhatikan bahwa contoh ini sangat mirip dengan contoh sebelumnya.
Dalam contoh ini, loadJs
adalah fungsi utilitas yang memuat
resource JavaScript dengan membuat elemen skrip secara dinamis dan melampirkannya
ke DOM browser. Fungsi ini menerima dua parameter: URL sebagai
string, dan fungsi callback yang akan dijalankan setelah skrip
dimuat.
Di dalam loadJs
, stempel waktu awal disimpan di
startTime
. Setelah resource dimuat, fungsi callback akan dieksekusi. Dalam fungsi callback, stempel waktu akhir diambil dan digunakan untuk menghitung waktu yang diperlukan untuk memuat resource JavaScript. Waktu yang dihabiskan ini dikirim
ke Google Analytics menggunakan metode _trackTiming
.
Jadi dengan memanggil:
loadJs(‘//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’, callback);
Akan memuat library jQuery secara asinkron dari jaringan Penayangan Konten Google, dan setelah selesai, mengeksekusi fungsi callback, yang kemudian akan mengirimkan waktu pemuatan resource ke Google Analytics.
Bekerja dengan Beberapa Waktu Pengguna
Misalnya Anda ingin memuat beberapa resource JavaScript menggunakan kode di atas.
Karena variabel startTime
bersifat global, setiap kali Anda
melacak awal periode waktu, variabel startTime
akan ditimpa, sehingga menghasilkan waktu yang salah untuk dihabiskan.
Jadi sebagai praktik terbaik, Anda harus mempertahankan instance unik waktu mulai dan berakhir untuk setiap resource yang ingin dilacak.
Perhatikan juga bahwa parameter kategori dan variabel untuk
_trackTiming
merupakan hard code. Jadi, jika menggunakan
loadJs
untuk memuat beberapa resource, Anda tidak akan
dapat membedakan setiap resource dalam laporan Google Analytics.
Kedua masalah tersebut dapat diselesaikan dengan menyimpan parameter waktu
dan _trackTiming
di objek JavaScript.
Membuat objek JavaScript untuk menyimpan waktu pengguna.
Berikut adalah objek JavaScript sederhana yang dapat digunakan untuk menyimpan data waktu pengguna untuk setiap resource yang dilacak:
function TrackTiming(category, variable, opt_label) { this.category = category; this.variable = variable; this.label = opt_label ? opt_label : undefined; this.startTime; this.endTime; return this; } TrackTiming.prototype.startTime = function() { this.startTime = new Date().getTime(); return this; } TrackTiming.prototype.endTime = function() { this.endTime = new Date().getTime(); return this; } TrackTiming.prototype.send = function() { var timeSpent = this.endTime - this.startTime; window._gaq.push(['_trackTiming', this.category, this.variable, timeSpent, this.label]); return this; }
Sekarang kita dapat menggunakan objek ini untuk membuat loadJs
berfungsi untuk beberapa permintaan.
Mengirim waktu pengguna yang disimpan
Setelah kita memiliki cara menyimpan data waktu untuk setiap resource yang ingin
dilacak, berikut cara memperbarui loadJs
untuk menggunakannya:
var tt = new TrackTiming('jQuery', 'Load Library', 'Google CDN'); loadJs(‘//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’, myCallback, tt); function loadJs(url, callback, tt) { var js = document.createElement('script'); js.async = true; js.src = url; js.onload = callback; var s = document.getElementsByTagName('script')[0]; tt.startTime(); js.tt = tt; s.parentNode.insertBefore(js, s); } function myCallback(event) { var e = event || window.event; var target = e.target ? e.target : e.srcElement; target.tt.endTime().send(); // Library has loaded. Now you can use it. }
Kode di atas dimulai dengan membuat objek TrackTiming
baru
tempat kategori, variabel, dan label opsional diteruskan ke
konstruktor. Objek TrackTiming
kemudian diteruskan sebagai
parameter ke fungsi loadJs
.
Dalam loadJs
, metode startTime
dipanggil untuk mendapatkan dan menyimpan stempel waktu awal.
Pada contoh sebelumnya, fungsi callback dapat dengan mudah mengakses
variabel startTime
karena bersifat global. Setelah startTime
menjadi bagian dari objek TrackTiming
, kita memerlukan cara untuk meneruskan objek ini dari fungsi loadJs ke fungsi callback.
Untuk mengatasi masalah ini, salah satu strateginya adalah menambahkan objek TrackTiming
sebagai properti ke elemen skrip. Karena fungsi callback dijalankan dari metode onload
skrip, objek peristiwa diteruskan sebagai parameter ke callback. Objek peristiwa ini selanjutnya dapat digunakan untuk mengambil objek skrip asli yang mengaktifkan peristiwa, dan objek skrip tersebut dapat digunakan untuk mengakses objek TrackTiming
kita.
Setelah kita dapat mengakses objek TrackTiming
asli, skrip kemudian dapat mengakhiri waktu dan mengirimkan data.
Lihat demo langsung dari contoh ini di situs contoh kami.
Pola penambahan objek TrackTiming ini sebagai properti ke objek yang sedang dilacak, cenderung berfungsi dengan baik untuk melacak mekanisme pemuatan asinkron lainnya seperti menggunakan objek XMLHttpRequest
.
Melacak XMLHttpRequests
Cara umum lainnya untuk memuat resource halaman web secara asinkron adalah dengan menggunakan
objek XMLHttpRequest
. Waktu yang diperlukan untuk memuat resource ini juga dapat dilacak menggunakan metode _trackTiming
dan objek TimeTracker
.
Berikut adalah contoh yang memuat file kutipan dari server.
var url = ‘//myhost.com/quotes.txt’; var tt = new TrackTime('xhr demo', 'load quotes'); makeXhrRequest(url, myCallback, tt); function makeXhrRequest(url, callback, tt) { if (window.XMLHttpRequest) { var xhr = new window.XMLHttpRequest; xhr.open('GET', url, true); xhr.onreadystatechange = callback; tt.startTime(); xhr.tt = tt; xhr.send(); } } function myCallback(event) { var e = event || window.event; var target = e.target ? e.target : e.srcElement; if (target.readyState == 4) { if (target.status == 200) { target.tt.endTime().send(); // Do something with the resource. } } }
Contoh ini terlihat sangat mirip dengan contoh loadJs. Lihat demo langsung di sini.
Hindari Mengirim Data Buruk
Pada contoh di atas, untuk mendapatkan waktu yang dihabiskan, kode mengurangi waktu berakhir dari waktu mulai. Hal ini umumnya berfungsi dengan baik karena waktu mulai lebih kecil dari waktu berakhir. Namun, hal ini dapat menjadi masalah jika waktu di browser berubah. Jika pengguna mengubah waktu mesin setelah waktu mulai ditetapkan, data yang buruk dapat dikirim ke Google Analytics. Masalah besar saat mengirim satu nilai buruk yang besar adalah nilai tersebut akan mendistorsi metrik rata-rata dan total metrik Anda.
Jadi, secara umum, sebaiknya pastikan waktu yang dihabiskan
lebih besar dari 0 dan lebih sedikit daripada jangka waktu tertentu, sebelum Anda mengirim
data ke Google Analytics. Kita dapat mengubah metode pengiriman TimeTracker
di atas untuk melakukan pemeriksaan ini:
TrackTiming.prototype.send = function() { var timeSpent = this.endTime - this.startTime; var hourInMillis = 1000 * 60 * 60; if (0 < timeSpent && timeSpent < hourInMillis) { window._gaq.push(['_trackTiming', this.category, this.variable, timeSpent, this.label]); } return this; }
Mengganti Frekuensi Sampel dan Debug
Metode _trackTiming
hanya mengirimkan data ke Google Analytics dengan kecepatan yang sama untuk semua metrik kecepatan situs yang dikumpulkan oleh Google Analytics. Secara default, persentase ini ditetapkan ke 1% dari semua pengunjung.
Untuk situs dengan jumlah traffic besar, defaultnya seharusnya tidak ada masalah. Namun, untuk situs dengan lebih sedikit traffic, Anda dapat meningkatkan frekuensi sampel dengan menetapkan parameter frekuensi sampel opsional. Contoh:
_gaq.push(['_trackTiming', 'jQuery', 'Load Library', timeSpent, 'Google CDN', 50]);
Akan mengumpulkan data _trackTiming dari 50% pengunjung.
Atau, Anda dapat menetapkan metode
_setSiteSpeedSampleRate
guna menetapkan frekuensi sampel untuk
semua pengaturan waktu kecepatan situs, termasuk metode _trackTiming
. Misalnya:
_gaq.push([‘_setSiteSpeedSampleRate’, 50]);
Juga akan mengumpulkan data _trackTiming
dari 50% pengunjung.
Biasanya saat Anda menguji dan memverifikasi penerapan Google Analytics, traffic ke situs yang Anda uji menjadi sangat sedikit. Jadi, sebaiknya tingkatkan frekuensi sampel hingga 100% saat pengujian.
Melacak Peristiwa Waktu Lainnya
Meskipun semua contoh di atas berfokus pada penggunaan metode _trackTiming
untuk melacak waktu yang diperlukan untuk memuat resource, metode ini juga dapat digunakan untuk melacak durasi waktu secara umum. Misalnya,
Anda dapat melacak:
- Waktu yang dihabiskan pengunjung untuk menonton video.
- Waktu yang diperlukan untuk menyelesaikan level dalam game.
- Waktu yang dihabiskan pengunjung untuk membaca bagian tertentu pada situs.
Dalam setiap kasus ini, Anda dapat menggunakan kembali objek JavaScript TimeTracker
yang sama yang ditampilkan di atas untuk menyederhanakan pengumpulan dan pengiriman data waktu yang dihabiskan ke Google Analytics.