Как работает _gaq.push(['_ trackPageLoadTime]]?

Как работает функция скорости сайта Google Analytics, _gaq.push(['_trackPageLoadTime'])? Есть ли какая-либо документация о том, как она работает?

Ответ 1

Изменить. По состоянию на 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);

В приведенном выше примере это означает, что в вызове _trackPageLoadTime будет записано 4,14 секунды.

Из спецификации синхронизации W3C:

атрибут fetchStart

Если новый ресурс должен быть выбран с использованием HTTP GET или эквивалент, fetchStart должен вернуть время непосредственно перед пользовательский агент начинает проверку любого соответствующих кэш приложений. В противном случае он должен вернуть время когда пользовательский агент начинает выборку ресурс.

атрибут loadEventStart

Это атрибут должен возвращать время непосредственно перед событием загрузки текущий документ уволен. Это должен возвращать ноль, когда событие нагрузки еще не уволен.

Для любопытных сторон порядок выглядит следующим образом:

connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, время взаимодействия, domContentLoadedEventEnd, domComplete, loadEventStart, loadEventEnd

Для перечисленных значений 0:

unloadEventStart и unloadEventStart показывают время для разгрузки загрузки предыдущей страницы (но только если эта страница имеет то же происхождение, что и текущая.)

redirectEnd и redirectStart измерять задержку, добавленную, если в цепочке загрузки страницы была перенаправлена ​​HTTP.

secureConnectionStart представляется необязательным измерением для измерения времени соединения SSL.