Opublikowano: 5 dni temu
W monitorowaniu dostępności i wydajności stron www kluczowe jest precyzyjne określenie momentu, w którym strona uznawana jest za „w pełni załadowaną”. To właśnie od tego punktu zależą metryki czasu odpowiedzi, wyniki testów syntetycznych oraz rzetelność alertów.
W tradycyjnych serwisach internetowych wystarczało śledzenie zdarzenia window.onload, oznaczającego zakończenie ładowania dokumentu i podstawowych zasobów. Jednak we współczesnych, dynamicznych aplikacjach – opartych na zapytaniach AJAX, frameworkach SPA czy dogrywanych danych – faktyczna gotowość strony często pojawia się dopiero po ustaniu dodatkowej aktywności sieciowej (network idle).
Zrozumienie różnicy między tymi zdarzeniami, oraz wybór właściwego, jest niezbędne przy konfiguracji scenariuszy monitorowania, analizie raportów i unikaniu fałszywych alarmów.
Zdarzenie load (lub window.onload) wywoływane jest wtedy, gdy cała strona zostanie wczytana – łącznie ze wszystkimi zależnymi zasobami, takimi jak arkusze stylów, skrypty oraz obrazy (również te oznaczone jako async lub defer). Wyjątek stanowią jedynie zasoby ładowane „leniwie” (lazy loading).
Zdarzenie network idle oznacza moment, w którym ustaje jakakolwiek aktywność sieciowa – strona przestaje wysyłać żądania do serwera. Jest to moment, w którym przestają być wykonywane jakiekolwiek operacje sieciowe takie jak requesty AJAX/fetch, zasoby ładowane „leniwie” lub w inny sposób pobierane dynamicznie.
W znaczącej części przypadków, network idle będzie tym czego szukamy – gdy interesuje nas objęcie pomiarem najdalej wysuniętego w czasie momentu, co pozwoli na uwzględnienie jak największej liczby danych. Najwierniej oddaje to perspektywę użytkownika witryny.
Z kolei zdarzenie load znajdzie zastosowanie, gdy aktywność sieciowa strony nie ustaje mimo jej formalnego załadowania i zdatności do użytkowania. Taka sytuacja może mieć miejsce, gdy charakter strony wymusza ciągłą wymianę danych. Oczekiwanie wówczas na ustanie aktywności sieciowej może wypatrzyć wyniki monitorowania, lub w ogóle nigdy nie nastąpić.