Редактировать : по состоянию на 16 ноября 2011 года, функция _trackPageLoadTime
устарела, а ее функциональные возможности установлены в качестве настройки по умолчанию .(С функциональной точки зрения он превратился из функции отказа в функцию отказа.)
_setSiteSpeedSampleRate
- новая функция для установки частоты дискретизации для этой функции;его значение по умолчанию 1
(как в 1%).Чтобы отказаться от использования этой функции скорости сайта, необходимо передать 0
этой функции:
_gaq.push(["_setSiteSpeedSampleRate", 0]);
Из Справочного центра Google Analytics :
В настоящее время этот отчет поддерживает следующие браузеры: Chrome, Internet Explorer 9 и предыдущие версии Internet Explorer с установленной панелью инструментов Google.В частности, для отчетов о скорости сайта требуются браузеры, поддерживающие интерфейс NavigationTiming HTML5, или установлена панель инструментов 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, loadEventEnd
для перечисленных 0 значений и 1083: 1083 и 10821084 * показывает время выгрузки предыдущей страницы (но только если эта страница имеет то же происхождение, что и текущая.)
redirectEnd
и redirectStart
измеряют добавленную задержку, если было перенаправление HTTPв цепочке загрузки страницы.
secureConnectionStart
представляется необязательным измерением для измерения времени соединения SSL.