Как работает функция Google Analytics Site Speed _gaq.push(['_trackPageLoadTime'])
? Есть ли документация о том, как это работает?
Ответы:
Edit : По состоянию на 16 ноября 2011 года функция устарела и ее функциональность была установлена в качестве настройки по умолчанию . (С функциональной точки зрения, она превратилась из функции выбора в функцию отказа.)_trackPageLoadTime
_setSiteSpeedSampleRate
это новая функция для установки частоты дискретизации для этой функции; его значение по умолчанию 1
(как в 1%). Чтобы отказаться от использования этой функции Site Speed, вы должны передать 0
этой функции:
_gaq.push(["_setSiteSpeedSampleRate", 0]);
В Справочном центре Google Analytics :
В настоящее время этот отчет поддерживает следующие браузеры: Chrome, Internet Explorer 9 и предыдущие версии Internet Explorer с установленной панелью инструментов Google. В частности, для отчетов о скорости загрузки сайта требуются браузеры, поддерживающие интерфейс HTML5 NavigationTiming, или с установленной панелью инструментов Google Internet Explorer.
Таким образом, он не реализует свой собственный таймер, как многие предыдущие решения Homeback, чтобы выяснить, сколько времени требуется для загрузки страницы. Вместо этого он использует новую функцию HTML5, которая в настоящее время поддерживается только в перечисленных выше случаях, и называется NavigationTiming.
РЕДАКТИРОВАТЬ : теперь это поддерживается в Firefox 7
(Важно отметить , что она не запускается при каждой загрузке, вместо этого, он в настоящее время образцы около 2% от просмотров страниц, хотя он настроен на пытаться отслеживать все загрузки страницы на 10% посещения, так как все больше браузеров поддерживают API NavigationTiming, можно ожидать, что общий процент выборки начнет приближаться к 10%.)
Доступ к этому интерфейсу осуществляется из объекта DOM window.performance
(или, в более ранних версиях Chrome window.webkitPerformance
), с помощью timing
атрибута (so, 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
.
Если новый ресурс должен быть получен с помощью HTTP GET или аналогичного, fetchStart должен возвращать время непосредственно перед тем, как пользовательский агент начнет проверку любых соответствующих кешей приложений. В противном случае он должен вернуть время, когда пользовательский агент начинает выборку ресурса.
Этот атрибут должен возвращать время непосредственно перед запуском события загрузки текущего документа. Он должен возвращать ноль, если событие загрузки еще не запущено.
Для любопытных вечеринок порядок выглядит следующим образом:
connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, domInteractive, domContentLoadedEventEnd, domComplete, loadEventStart, loadEventEnd
Для перечисленных 0 значений:
unloadEventStart
и unloadEventStart
показать время выгрузки предыдущей загрузки страницы (но только если эта страница имеет то же происхождение, что и текущая).
redirectEnd
и redirectStart
измерить добавленную задержку, если в цепочке загрузки страницы было перенаправление HTTP.
secureConnectionStart
является необязательной мерой для измерения времени SSL-соединения.
secureConnectionStart
- это стандартное измерение, но для браузера (или того, что обрабатывает контент), отчет не является обязательным. w3c-test.org/webperf/specs/NavigationTiming/…
_trackPageLoadTime
в очередь, а затем последовательно запустить все функции в этой очереди после загрузки ga.js. Это позволяет безопасно загружатьga.js
файлы асинхронно.