Odpowiedzi:
Edycja : od 16 listopada 2011 r . _trackPageLoadTime
Funkcja została wycofana, a jej funkcjonalność została ustawiona jako ustawienie domyślne . (Mówiąc funkcjonalnie, z funkcji opt-in stała się funkcją opt-out).
_setSiteSpeedSampleRate
to nowa funkcja do ustawiania częstotliwości próbkowania tej funkcji; jego domyślna wartość to 1
(jak w 1%). Aby zrezygnować z korzystania z tej funkcji Szybkość witryny, musisz przekazać 0
tę funkcję:
_gaq.push(["_setSiteSpeedSampleRate", 0]);
Z Centrum pomocy Google Analytics :
Ten raport obsługuje obecnie następujące przeglądarki: Chrome, Internet Explorer 9 i poprzednie wersje Internet Explorera z zainstalowanym paskiem narzędzi Google Toolbar. Mówiąc dokładniej, raporty dotyczące szybkości witryny wymagają przeglądarek obsługujących interfejs czasu nawigacji HTML5 lub z zainstalowanym paskiem narzędzi Google Internet Explorer
Nie implementuje więc własnego licznika czasu, jak miało to miejsce w przypadku wielu wcześniejszych rozwiązań homeback, aby dowiedzieć się, jak długo trwa ładowanie strony. Zamiast tego używa nowej funkcji HTML5, obecnie obsługiwanej tylko w wyżej wymienionych przypadkach, zwanej NavigationTiming.
EDYCJA : To jest teraz obsługiwane w przeglądarce Firefox 7
(Należy pamiętać, że nie uruchamia się przy każdym ładowaniu; zamiast tego obecnie próbkuje około 2% odsłon, chociaż jest skonfigurowany tak, aby próbować śledzić wszystkie wczytania stron przy 10% odwiedzin; ponieważ więcej przeglądarek obsługuje interfejs NavigationTiming API, można oczekiwać, że całkowity procent próbkowania zacznie zbliżać się do 10%).
Dostęp do tego interfejsu uzyskuje się w ramach obiektu DOM window.performance
(lub we wcześniejszych wersjach Chrome window.webkitPerformance
) za pomocą timing
atrybutu (tak, window.performance.timing
). Obiekt przechowuje zmierzone wartości wszystkich kluczowych czasów ładowania strony, a Google Analytics odejmuje 2 z ważniejszych wartości zewnętrznych, aby ocenić szybkość ładowania strony.
W przypadku obciążenia witryny Mashable.com bez pamięci podręcznej, oto przykład tego, co mierzy (w przeglądarce 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
}
Te liczby są milisekundami epoki lub milisekundami od 1 stycznia 1970 roku. Nie widziałem żadnej dokumentacji, które wartości odejmują, aby wygenerować swoje wartości, ale po pobieżnym sprawdzeniu ga.js wygląda to tak loadEventStart-fetchStart
:
h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart);
Na powyższej próby, co oznacza, że będzie ona rejestrować 4,14 sekund na _trackPageLoadTime
wezwanie.
Jeśli nowy zasób ma zostać pobrany przy użyciu protokołu HTTP GET lub odpowiednika, funkcja fetchStart musi zwrócić czas bezpośrednio przed rozpoczęciem sprawdzania przez agenta użytkownika odpowiednich pamięci podręcznych aplikacji. W przeciwnym razie musi zwrócić czas, kiedy agent użytkownika rozpocznie pobieranie zasobu.
Ten atrybut musi zwracać czas bezpośrednio przed uruchomieniem zdarzenia ładowania bieżącego dokumentu. Musi zwrócić zero, gdy zdarzenie load nie zostało jeszcze uruchomione.
W przypadku ciekawskich przyjęć kolejność wygląda następująco:
connectStart, connectEnd, domainLookupStart, domainLookupEnd, fetchStart, navigationStart, requestStart, responseStart, domLoading, responseEnd, domContentLoadedEventStart, domInteractive, domContentLoadedEventEnd, domComplete, loadEventStart, loadEventEnd
Dla wymienionych wartości 0:
unloadEventStart
i unloadEventStart
pokaż czasy wyładowania poprzedniej strony (ale tylko wtedy, gdy ta strona ma to samo źródło co bieżąca).
redirectEnd
i redirectStart
zmierzyć opóźnienie dodane, jeśli w łańcuchu ładowania strony było przekierowanie HTTP.
secureConnectionStart
wydaje się być opcjonalną miarą pomiaru czasu połączenia SSL.
secureConnectionStart
jest standardowym pomiarem, ale przeglądarka (lub cokolwiek obsługuje treść) może zgłaszać. w3c-test.org/webperf/specs/NavigationTiming/…
_trackPageLoadTime
do kolejki, a następnie uruchom wszystkie funkcje w tej kolejce sekwencyjnie po załadowaniu ga.js. Pozwala na bezpieczne ładowaniega.js
asynchroniczne.