
Szybkość ładowania się strony internetowej jest czynnikiem rankingującym w Google. Łatwość wynika ze sporej liczby narzędzi, które w przyjazny sposób zwracają informację o kondycji witryny. Należy jednak zaznaczyć, że wdrożenie optymalizacji poprawiającej szybkość witryny może stanowić ogromne wyzwanie - raz, że Google coraz bardziej podnosi poprzeczkę (np. przejście z metodyki Lighthouse 5.0 na Lighthouse 6.0), dwa - czasem realne wdrożenie zmian in plus w tym kierunku nie ma odwzorowania w wyniku. Zatem ta łatwość (nawet samego sprawdzenia) nie jest tak oczywista.
Przeglądając opinie specjalistów SEO czy to w grupach na Facebooku czy w artykułach można zauważyć pewna dychotomię. Z jednej strony część pozycjonerów uparcie twierdzi, że szybkość strony (szbkośc ładowania się strony) jest kluczowa dla dobrego pozycjonowania się witryny internetowej, a z drugiej strony płyną głosy, że nie widać bezpośredniej korelacji między szybkością, a miejscem w wynikach wyszukiwania.
Ja w tym miejscu zacząłbym od rozróżnienia realnej szybkości i wagi witryny, a punktacją przyznawaną przez najpopularniejsze aktualnie narzędzie - Google Page Speed. Ciężko nie zauważyć, że niniejsze narzędzie często zwraca abstrakcyjne wyniki bądź rekomenduje zmiany, których wprowadzenie finalnie w żaden sposób nie pomaga.
Przykładem na brak korelacji pozycji w wynikach wyszukiwania <-> punkty w Google Page Insight może być chociażby prosty test, który wykonałem – a mianowicie sprawdziłem ilość uzyskiwanych punktów dla witryn wyświetlanych w TOP10 dla kilku wybranych fraz:

Na niebiesko zaznaczyłem pozycje, na których znajdujące się witryny uzyskały najlepszy wynik w googlowym narzędziu, a na turkusowo te o najmniejszej liczbie punktów. Jak widać, brak jest wyraźnych zależności zajmowanego miejsca od ilości punktów.
Na podstawie mojego doświadczenia stwierdzam, że powinniśmy popatrzeć na szybkość witryny w sposób bardziej wyrafinowany i tak:

Serwis merce.com osiąga tylko 15 pkt w Google Page Speed pomimo zastosowania technologii PWA oraz szybkiego działania
Po części wynika to z faktu, że PageSpeed Insight bierze pod uwagę również elementy związane z UX (Largest Contentful Paint, Cumulative Layout Shift). Dodatkowo należy pamiętać, ze część danych system pobiera z Chrome User Experience Report.
Warto zwrócić uwagę, że nawet serwisy najbardziej znanych systemów CMS mają nie lada problemy z uzyskaniem dużej ilości punktów w PageSpeed Insight – np. witryna https://www.drupal.org/ osiąga zaledwie 23 punkty.

Print screen z systemu PageSpeed Insight z fragmentem analizy strony drupal.org
W dalszej części artykułu przedstawiam elementy w największym stopniu obciążające witrynę wraz ze wskazówkami optymalizacji, a także rekomenduję jak pracować z narzędziem PageSpeed Insights.
Licznie przeprowadzane testy wykazały, że duża prędkość strony spowoduje lepszy współczynnik konwersji. Oznacza to, że im szybciej działa strona tym bardziej prawdopodobne jest, że użytkownik dokona konwersji (czyli np. zakupu w sklepie internetowym). Zgodnie z badaniem przeprowadzonym przez Hubspot’a 47% klientów spodziewa się, że strona internetowa załaduje się w ciągu 2 sekund lub mniej. Natomiast testy przeprowadzone przez firmę mPulse Mobile wykazały, że:
Według badań Google z 2018 r. 53% użytkowników mobilnych opuszcza witrynę, której ładowanie trwa dłużej niż trzy sekundy.
Ze względu na znaczenie szybkości strony dla wygody użytkownika Google wprowadził nową aktualizację związaną z szybkością strony do swojego algorytmu w lipcu 2018 r. To sprawia, że szybkość strony jest od tamtego momentu krytycznym czynnikiem dla wszystkich.

Fragment infografiki Why Faster Page Load Time is Better For Your Website
Źródło: skilled.co
Oczywiście na współczynnik konwersji ma również wpływ projekt strony i jej układ, a także tekst i wykorzystane obrazy. Niezależnie jednak od innych czynników optymalizacja prędkości witryny powinna poprawić współczynniki konwersji, nawet jeśli strona nadal ma inne obszary wymagające optymalizacji.
Według mojego doświadczenia i obserwacji elementy, które w największym stopniu obciążają witrynę związane są z:
W moim uznaniu optymalizację strony internetowej pod katem szybkości lądowania należy rozpocząć od analizy właśnie tych 3 elementów, a dopiero potem przechodzenie do bardziej skomplikowanych faktorów.
W tym miejscu polecam również zaprzyjaźnienie się funkcjonalność przeglądarki internetowej (w moim przypadku Firefox) o nazwie Dla Twórców witryn > Sieć.

Fragment przeglądarki Firefox z różnymi funkcjonalnościami (narzędziami) w ramach Dla twórców witryn
W dalszych częściach tekstu często będę się odwoływał do tego narzędzia.
Zewnętrzne skrypty – w tym miejscu mam na myśli przesycenie witryny internetowej skryptami firm zewnętrznych, które często mają pomagać w działaniach marketignowych (np. TradeTracker, Criteo, Clickonometrics), analityce (Google Analytics, Facebook Analytics, Gemius), optymalizacji UX (Marketizator, Optimizely, Hotjar).
Oczywistym jest dla mnie, że zewnętrzne narzędzia są niezbędne do prowadzenia działań marketignowych. Problem pojawia się jednak wtedy gdy narzędzi jest zbyt dużo i zaczynają zbytnio obciążać witrynę.
Administratorem udostępnionych przez Ciebie danych osobowych jest Ideo Force Sp. z o.o. Podanie danych osobowych jest dobrowolne, jednak ich niepodanie uniemożliwi świadczenie usług na Twoją rzecz. Dowiedz się więcej o zasadach przetwarzania Twoich danych osobowych oraz przysługujących Ci uprawnieniach w Polityce prywatności.
Na szczególne potępienie zasługuje jednak sytuacja, w której po zakończeniu korzystania z narzędzia zapominamy odpiąć go ze strony. Wiele razy widziałem chociażby skrypt Hotjar, który po dokonaniu potrzebnych analiz potrafi jeszcze miesiącami wisieć wpięty w kod strony. Podobnie z narzędziami do testów AB, które zamiast faktycznie testować pewne rozwiązania służą do wprowadzania „trwałych” zmian na stronie.
Najprostszym z programów, który polecam do analizy ilości podpiętych skryptów zewnętrznych jest rozszerzenie do przeglądarki o nazwie Ghostery.

Widok zwracany przez rozszerzenie Ghostery dla witryny udemy.com
Narzędziem bardziej skomplikowanym, ale za to pokazującym dużo więcej informacji jest https://builtwith.com/.

Fragment wyników zwróconych przez narzędzie builtwith.com dla witryny udemy.com
Chcąc przyspieszyć działanie strony konieczne jest wyeliminowanie z niej wszystkich niepotrzebnych (lub nieużywanych) skryptów.
W przypadku zewnętrznych skryptów, których nie da się wyeliminować ze strony zalecam opóźnić ich ładowanie poprzez atrybut Defer bądź poprzez Google Tag Managera.
Wewnętrzne skrypty – mimo, że skrypty wewnętrzne (własne) nie muszą być przesyłane poprzez łącza internetowe i teoretycznie w znacznie mniejszym stopniu spowalniają stronę to jednak i tak przesadne ich wykorzystywanie może doprowadzić do „małej katastrofy”. Wprawiony w bój optymalizacji pozycjoner od razu wypatrzy takie skrypty lecz jak ma to zrobić osoba bez wiedzy technicznej?
Najlepiej sięgnąć do konsoli przeglądarki (Dla twórców witryn > Sieć) i sprawdzić ile na daną podstronę wczytuje się plików .js oraz .json, ile one ważą oraz ile czasu trwa ich wczytanie. Poniżej przykład dla witryny visionexpress.pl.

Print screen z Narzędzia dla twórców pokazujący ile plików .js zaciąga się do witryny visionexpress.pl
Na wstępnie warto zwrócić uwagę na podsumowanej u dołu przeglądarki – 23 żądania, które łącznie zajęły blisko 15 sekund. Następnie warto zająć się każdym skryptem i osobno – wtedy łatwo będzie zauważyć, że pobranie niektórych skryptów rozciąga się w czasie znacznie bardziej niż innych, a klikając na wybrany plik otrzymuje się szczegóły – tak jak na poniższym print screenie.

Print screen z Narzędzia dla twórców pokazujący jak długo wczytuje się wybrany plik .js
W przypadku plików wczytywanych z tej samej domeny większość czasu będzie pochłaniało Oczekiwanie czyli czas między wysłaniem żądania a odpowiedzią. Jest to odpowiednik TTFB (w narzędziach chrome dev).
Oczywiście można się rozpisywać na temat optymalizacji samych plików czy optymalizacji kodu (przepisania go) lecz uważam, że w dzisiejszych czasach optymalnie jest po prostu brutalnie i bez żalu usunąć te java scripty, które najbardziej obciążają serwis.
W przypadku kluczowych funkcjonalności można się zastanowić nad:
Obrazki na stronie internetowej – błąd, z którym spotykam się nagminnie to umieszczanie w serwisie internetowym obrazków o zbyt dużej wadze.
Najczęściej ma to miejsce w slajderach na stronach głównych, aczkolwiek nie raz spotkałem się z sytuacją, że miniaturki na podstronach posiadały znacznie większą rozdzielczość niż ta realnie wykorzystywana. Jako przykład niech posłuży witryna oknadachowe.com - na stronie głównej w slajderze znajduje się 6 pików graficznych ważących łącznie ponad 4 MB.

Fragment strony głównej witryny oknadachowe.com
Kolejnym przykładem może być witryna karmar.rzeszow.pl gdzie jedna z grafik będących uatrakcyjnieniem graficznym strony waży 4 MB.

Fragment narzędzia dla twórców w ramach przeglądarki Firefox z pomiarem przesyłanych danych dla witryny karmar.rzeszow.pl
Zdarza się także, że zdjęcia są wykorzystywani nieoptymalnie – np. (tak jak na poniższym przykładzie) zamiast użyć jednego zdjęcia twórca strony zdecydował się na wykorzystanie 2 zdjęć pomimo, że przedstawiają to samo. Różnica polega tylko na rozmiarze.

Analizując ten przykład należy dodać, że na badanej stronie taka sytuacja zdarzyła się kilkukrotnie i niwelacja tej nadmiarowości pozwoliłaby zaoszczędzić minimum 2 MB.
Kolejna rzecz na która należy zwrócić uwagę to przeładowanie grafiki – często wstawionymi na stronę jako banery. Jako przykład niech posłuży witryna taniaksiazka.pl, która choć bardzo atrakcyjna wizualnie nie oszczędza łączy.

Fragment witryny taniaksiazka.pl
Kolejny błąd to umieszczanie na stronie zdjęć o dużych rozmiarach, a następnie ich przeskalowywanie do rozmiarów mniejszych. Przykład takiego postępowania jest witryna http://limolux.pl/, która stosuje takie rozwiązanie do zdjęć na stronie głównej.

Fragment witryny limolux.pl z zaznaczonymi zdjęciami, które są wstawiane na stronę w większym rozmiarze, a następnie przeskalowywane do mniejszego w HTML
Wspomniane przeskalowywanie można w łatwy sposób zobaczyć klikając prawym klawiszem myszki na zdjęcie i wybierając opcję Pokaż informację o zdjęciu.

Screen z przeglądarki Firefox
Dlaczego to tak duży problem? Wystarczy spojrzeć na tabelkę, która przygotowałem porównującą rozmiary przed dopasowaniem rozmiaru i po tym.

Łączna oszczędność wynosi aż 2 352,81 KB czyli 2,3 MB.
Do pracy ze zdjęciami rekomenduję następujące narzędzia:
PageSpeed Insights jest narzędziem Google pozwalającym w szybkim czasie w prosty sposób dokonać analizy witryny internetowej pod katem szybkości jej ładowania. jak można przeczytać na stronie startowej PageSpeed Insights - narzędzie analizuje zawartość strony internetowej, a następnie sugeruje sposoby zwiększenia szybkości jej wyświetlania. Narzędzie informuje o wydajności strony zarówno na urządzeniach mobilnych, jak i stacjonarnych, a także zawiera sugestie dotyczące ulepszenia tej strony. No, tak – analiza jest szybka i prosta, a zwracane wyniki przejrzyste. Gorzej jednak jest z interpretacją danych oraz samą optymalizacją.
Zacznijmy od tego, że PageSpeed Insight oprócz samej szybkości witryny bada również elementy związane z UX (user experience). Narzędzie zapewnia zarówno dane laboratoryjne, jak i terenowe dotyczące strony. Dane laboratoryjne są przydatne do debugowania problemów z wydajnością, ponieważ są gromadzone w kontrolowanym środowisku. Jednak może nie uchwycić prawdziwych wąskich gardeł. Dane terenowe są przydatne do uchwycenia prawdziwych wrażeń użytkowników w świecie rzeczywistym, ale mają bardziej ograniczony zestaw wskaźników. Warto zwrócić uwagę na fakt, że Google w teście mobile symuluje połączenie z siecią 3G.
Jeśli chodzi o pierwszy typ danych to mówimy tutaj o metodologii Lighthouse (w momencie pisania niniejszego tekstu Lighthouse 6.0). Lighthouse to narzędzie do inspekcji witryn, które jest dostępny w Chrome DevTools, npm (jako moduł Node i CLI) lub jako rozszerzenie przeglądarki (w Chrome i Firefox). Obsługuje wiele usług Google, w tym web.dev/measure i właśnie PageSpeed Insights.
Natomiast jeśli chodzi o drugi typ danych to Google korzysta z Chrome User Experience Report. Dane podane w publicznym raporcie z doświadczeń użytkowników przeglądarki Chrome przechowywanym w Google BigQuery są obsługiwane przez standardowe interfejsy API. Raport o wrażeniach użytkowników Chrome jest oparty na rzeczywistych pomiarach kluczowych danych dotyczących użytkowników. Teoretycznie zbierany jest od użytkowników, którzy zdecydowali się zsynchronizować historię przeglądania, nie skonfigurowali hasła synchronizacji i mają włączoną funkcję raportowania statystyk użytkowania.
Skupmy się jednak na samym narzędziu. Jest ono dostępne publicznie pod adresem https://developers.google.com/speed/pagespeed/insights/ i pozwala na analizę dowolnej strony internetowej.

Print screen z systemu PageSpeed Insight z fragmentem analizy strony visionexpress.pl
Najbardziej zauważalnym elementem jest punktacja. Narzędzie wylicza ją na podstawie kilku wskaźników laboratoryjnych:
Punktacja liczona jest według średniej ważonej zaprezentowanej na poniższym wykresie:

Wykres przedstawiający wpływ poszczególnych wskaźników na finalną punktowa ocenę strony
Pod adresem https://googlechrome.github.io/lighthouse/scorecalc/ można zasymulować pewne dane i zobaczyć jakie otrzyma się wynik. Co ciekawe symulacja automatycznie przebiega dla wersji 5 i 6 Lighthouse’a więc właściciel witryn, które ucierpiały po aktualizacji mogą podglądnąć który z czynników o tym zadecydował.
Na poniższym screenie pokazałem porównałem wyniku pokazywanego przez PageSpeed Insight a Lighthouse Scoring Calulator. Jak widać dla takich samych wartości 6 kluczowych faktorów wyniki punktowe są identyczne.

Porównanie PageSpeed Insight i Lighthouse Scoring Calulator
Jasne jest więc, że pracując ze stroną należy skupić się właśnie wskazanych wcześniej elementach.

Zestawienie faktorów w PageSpeed Insight
First Contentful Paint (Pierwsze wyrenderowanie treści) - FCP mierzy, ile czasu zajmuje przeglądarce wyświetlenie pierwszego fragmentu treści DOM po przejściu użytkownika na analizowaną stronę. Pierwsze wyrenderowanie treści = czas odpowiedzi serwera (TTFB) + czas ładowania treści + czas renderowania. Aby poprawić ten wskaźnik:
Speed Index (Indeks szybkości) - indeks mierzy szybkość wyświetlania zawartości podczas ładowania strony. Lighthouse rejestruje wideo z ładowaniem strony w przeglądarce i oblicza postęp wizualny między ramkami. Aby przyspieszyć ten parametr:
Largest Contentful Paint (Największe wyrenderowanie treści) - LCP to elementy zorientowany stricte na użytkownika i oznacza postrzeganą przez niego prędkości wczytywani. Szybki LCP pomaga zapewnić użytkownika, że strona jest przydatna i wartościowa. Metryka ta podaje czas renderowania największego obrazu lub bloku tekstowego widocznego w oknie roboczym. Najczęściej mała ilość punktów w tym wskaźniku wynika z takich czynników:
Time to Interactive (Czas do pełnej interaktywności) - TTI jest ważny, ponieważ niektóre witryny optymalizują widoczność treści kosztem interaktywności. Może to powodować frustrujące wrażenia użytkownika: strona wydaje się być gotowa, ale kiedy użytkownik próbuje z nią wejść, nic się nie dzieje. Jeśli uzyskujesz słaby wynik w tym faktorze to zoptymalizuj stronę pod kątem gotowości do interakcji np. poprzez:
Total Blocking Time (Łączny czas zablokowania) - TBT mierzy całkowity czas, w którym strona jest blokowana, aby odpowiedzieć na dane wprowadzone przez użytkownika, takie jak kliknięcia myszą, dotknięcia ekranu lub naciśnięcia klawiatury. Suma jest obliczana przez dodanie części blokującej wszystkich długich zadań między First Contentful Paint a Time do Interactive. Każde zadanie, które wykonuje się przez ponad 50 ms, jest długim zadaniem. Czas po 50 ms jest częścią blokującą. Na przykład, jeśli Lighthouse wykryje zadanie o długości 90 ms, część blokująca wynosiłaby 40 ms. Jeśli uzyskujesz słaby wynik w tym faktorze to:
Cumulative Layout Shift (Zbiorcze przesunięcie układu) - CLS podobnie jak LCP jest ważnym, zorientowanym na użytkownika wskaźnikiem pomiaru stabilności wizualnej, ponieważ pomaga określić, jak często użytkownicy doświadczają nieoczekiwanych przesunięć układu. Niski CLS pomaga zapewnić, że strona jest odpowiednia, stabilna graficznie i „nic nie skacze”. Najczęstsze przyczyny słabego CLS to:
PageSpeed Insight podaje też rekomendacje, których wdrożenie powinno sprawić, że kondycja witryny się poprawi. System dzieli rekomendacje na 3 kategorie:

Fragment narzędzia PageSpeed Insight z możliwościami optymalizacji witryny
Wśród wszystkich wskazówek mogą się pojawić między innymi:
Wartym uwagi jest narzędzie WebPageTest dostępne pod adresem https://webpagetest.org - pozwala ono podglądnąć wartości LCP, CLS, TBT etc. Dodatkowo, daje możliwość określenia, które zasoby wczytuję się w jakiej kolejności i w jakim czasie.

Fragment narzędzia WebPageTest dla witryny drupal.org
Koniecznie należy też zwrócić uwagę na to co pokazuje Google Search Console w raporcie Core web vitals. Podstrony wskazane jako Poor oraz Need improvment wymagają poprawy, a wskazane jako Good są optymalne.

Raport Core web vitals w ramach Google Search Console
Dane do raportu pochodzą z raportu User Chrome. Odzwierciedla to rzeczywiste dane o użytkowaniu witryny przez realnych użytkowników.
W celach analizy poszczególnych adresów URL witryny i ich benchmarkingowania polecam raport Szybkość witryny w ramach Google Analytics.

Fragment raportu z Google Analytics dotyczący szybkości strony
Raport Szybkość wczytywania strony służy do oceny krytycznych czasów wczytywania podstron URL serwisu. Dzięki raportowi możliwe jest porównanie czasu wczytywania poszczególnych podstron w porównaniu do średniej, czyli wyłamywaniu podstron z najgorszym czasem i powolna, żmudna praca nad nimi.
Co ciekawe może się okazać, że docelowi odbiorcy witryny znajdują się na obszarze geograficznym, gdzie połączenie z Internetem jest wolniejsze i prowadzić do tego, że czasy wczytywania podstron będą diametralnie różne w różnych przeglądarkach.
Warto zwrócić uwagę na:
Takie informacje dają możliwość podjęcia bardzo precyzyjnych działań poprawiających wydajność witryny.
Innymi narzędziami, które rekomenduję do wykorzystania przy analizie i optymalizacji szybkości witryny są:
Mam nadzieję, że niniejszym artykułem udało mi się przybliżyć kwestie związane z analizą, interpretacją danych oraz optymalizacją stron pod kątem ich szybkości. Niestety nie istnieją uniwersalne, proste metody poprawy szybkości. Do każdej witryny należy podejść indywidualnie i pracować nad każdym szczegółem. Jestem przekonany, że każda strona ma potencjał do tego, aby PageSpeed Insight przyznał jej powyżej 90 punktów. Wykorystuj dostępne narzędzia, a szybkość ładowania się strony nie będzie Twoim wrogiem a sprzymierzeńcem. Powodzenia