Как работает функция скорости сайта Google Analytics, _gaq.push(['_trackPageLoadTime'])
? Есть ли какая-либо документация о том, как она работает?
Как работает _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:
Если новый ресурс должен быть выбран с использованием HTTP GET или эквивалент, fetchStart должен вернуть время непосредственно перед пользовательский агент начинает проверку любого соответствующих кэш приложений. В противном случае он должен вернуть время когда пользовательский агент начинает выборку ресурс.
Это атрибут должен возвращать время непосредственно перед событием загрузки текущий документ уволен. Это должен возвращать ноль, когда событие нагрузки еще не уволен.
Для любопытных сторон порядок выглядит следующим образом:
connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, время взаимодействия, domContentLoadedEventEnd, domComplete, loadEventStart, loadEventEnd
Для перечисленных значений 0:
unloadEventStart
и unloadEventStart
показывают время для разгрузки загрузки предыдущей страницы (но только если эта страница имеет то же происхождение, что и текущая.)
redirectEnd
и redirectStart
измерять задержку, добавленную, если в цепочке загрузки страницы была перенаправлена HTTP.
secureConnectionStart
представляется необязательным измерением для измерения времени соединения SSL.