Як працює _gaq.push (['_ trackPageLoadTime'])?


102

Як функціонує, швидкість _gaq.push(['_trackPageLoadTime'])роботи веб-сайту Google Analytics ? Чи є документація про те, як це працює?


2
@ stuken.yuri - це синтаксис асинхронного дзвінка Google Analytics. Це в основному означає: додайте функцію (ім'я) _trackPageLoadTimeдо черги, а потім запустіть усі функції цієї черги послідовно після завантаження ga.js. Це дозволяє безпечно завантажувати ga.jsасинхронно.
Яхель

Відповіді:


181

Редагувати : Станом на 16 листопада 2011 р . _trackPageLoadTimeФункція була вимкнена, а її функціональність встановлена ​​як налаштування за замовчуванням . (Функціонально кажучи, він перейшов від функції відключення до функції відмови.)

_setSiteSpeedSampleRate- нова функція встановлення частоти вибірки за цією функцією; його значення за замовчуванням 1(як у 1%). Щоб відмовитися від використання цієї функції «Швидкість сайту», вам потрібно перейти 0до цієї функції:

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

З довідкового центру Google Analytics :

Зараз цей звіт підтримує такі веб-переглядачі: Chrome, Internet Explorer 9 та попередні версії Internet Explorer із встановленою панеллю інструментів Google. Більш конкретно, у звітах про швидкість сайту потрібні веб-переглядачі, які підтримують інтерфейс HTML5 NavigationTiming або встановлено панель інструментів Google Internet Explorer

Таким чином, він не реалізує власний таймер, як багато попередніх домашніх рішень, щоб зрозуміти, скільки часу потрібно для завантаження сторінки. Натомість він використовує нову функцію HTML5, що підтримується лише у вищезазначених випадках, під назвою NavigationTiming.

EDIT : Зараз це підтримується у Firefox 7

(Важливо зазначити, що він не працює при кожному завантаженні; натомість він наразі дискретизує близько 2% переглядів сторінок, хоча він налаштований так, щоб намагатися відстежувати всі завантаження сторінок під час 10% відвідувань; оскільки більшість браузерів підтримують API NavigationTiming, ви можете очікувати, що загальний відсоток вибірки почне наближатися до 10%.)

Доступ до цього інтерфейсу здійснюється під об’єктом DOM window.performance(або, в попередніх версіях Chrome, window.webkitPerformance), використовуючи timingатрибут (так, window.performance.timing). Об'єкт зберігає виміряні значення всіх часових подій завантаження ключової сторінки, а Google Analytics віднімає 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
}

Ці цифри - це епізодні мілісекунди або мілісекунди з 1 січня 1970 року. Я не бачив жодної документації щодо того, які значення вони віднімають, щоб генерувати свої значення, але при побіжному огляді 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

Цей атрибут повинен повертати час безпосередньо перед запуском події завантаження поточного документа. Він повинен повернути нуль, коли подія завантаження ще не запущена.

Для допитливих учасників замовлення виглядає наступним чином:

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

Для перелічених 0 значень:

unloadEventStartі unloadEventStartвідобразити час розвантаження попереднього завантаження сторінки (але лише якщо ця сторінка має те саме походження, що й поточна.)

redirectEndі redirectStartвиміряти додану затримку, якщо в ланцюзі завантаження сторінки було перенаправлення HTTP.

secureConnectionStart представляється необов'язковим вимірюванням для вимірювання часу з'єднання SSL.


6
Ти рок-чувак, серйозно. Дякую за таку ретельну відповідь.
Сид

secureConnectionStartє стандартним повідомленням, але браузер (або що обробляє вміст) звітувати не може. w3c-test.org/webperf/specs/NavigationTiming/…
Ерік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.