Przejdź do treści
Podobają Ci się nasze treści?
Sięgnij po unikalną wiedzę prosto od developerów i marketingowców. Zapisz się do newslettera.
CAPTCHA
Dziękujemy za zapisanie się do newslettera!
Aby otrzymywać najświeższe, branżowe informacje, potwierdź subskrypcję w mailu, który od nas dostałeś.
PS. Nawet tak ważne wiadomości lubią czasem pomylić folder, dlatego upewnij się, że mail nie trafił do SPAMU
Otwórz swoją skrzynkę e-mail

Lazy loading - co to jest i jak może pomóc Twojej stronie?

Kategoria: 
Data aktualizacji: 
Czas czytania
: 9 min

Szybkość działania strony internetowej to jeden z najważniejszych czynników SEO. Internauci chcą jak najszybciej dotrzeć do treści, która ich interesuje – w przeciwnym razie opuszczą Twoją witrynę. Jak zatem usprawnić ten ważny aspekt? Z tego artykułu dowiesz się, czym są lazy i eager loading oraz jak to pierwsze rozwiązanie może Ci pomóc.

Lazy loading

Co to jest lazy loading i eager loading?

Lazy loading

Lazy loading, czyli po polsku „leniwe ładowanie”, to technika, dzięki której strona internetowa ładuje tylko te elementy, które są użytkownikowi w danym momencie potrzebne. Pozostałe treści – np. obrazy, animacje, bardziej złożone skrypty – wczytywane są dopiero wtedy, gdy użytkownik przewinie stronę do miejsca, w którym są umieszczone.

Brzmi prosto? I takie właśnie jest. Lazy loading mocno skraca czas ładowania strony przy pierwszym wejściu i zmniejsza ilość przesyłanych danych. Użytkownik może więc zacząć korzystać ze strony niemal od razu, bez czekania, aż przeglądarka załaduje całą witrynę.

Rozważmy to na przykładzie. Załóżmy, że chcesz wyszukać w Google Grafika zdjęcia Białego Domu. Po wpisaniu frazy pokazują Ci się najwyżej położone wyniki wyszukiwania:

Wyniki wyszukiwania Google grafika

Oczywiście, jeśli zejdziesz niżej, znajdziesz kolejne zdjęcia i odnośniki do filmów. Ich łączny rozmiar jest znacznie większy niż tych, które pojawiły się na samym początku. Właśnie dlatego ich załadowanie jest bardziej czasochłonne.

Załóżmy też, że spodobała Ci się już pierwsza fotografia i chcesz do niej przejść, a więc i zamknąć obecną stronę. W takiej sytuacji nie zobaczyłeś tak naprawdę większości zdjęć z wyników wyszukiwania. Jeśli strona załadowała je wszystkie, doszło do zwykłego zmarnowania zasobów, a Ty niepotrzebnie musiałeś dłużej czekać. Właśnie tutaj w grę wchodzi leniwe ładowanie. Jego zastosowanie sprawi, że w danym momencie załadują się jedynie te zdjęcia, które są zamieszczonena samej górze w wynikach wyszukiwania. Pozostałe zaczną się ładować wtedy, gdy przewiniesz niżej.

Eager loading

Eager loading to przeciwieństwo lazy loadingu. Czyli tradycyjne podejście, w którym wszystkie zasoby strony ładowane są od razu przy pierwszym wejściu na witrynę. Przeglądarka musi przetworzyć całą treść, wszystkie obrazy, skrypty i multimedia, zanim użytkownik zobaczy cokolwiek.

Takie rozwiązanie ma swoje plusy – cała strona jest dostępna natychmiast po pełnym załadowaniu, więc użytkownik nie musi czekać na doładowanie obrazów w trakcie scrollowania. Poza tym niektóre elementy i skrypty mogą być ze sobą na tyle powiązane, że bez ich wyrenderowania strona nie będzie wyglądać tak, jak powinna. Ale dzieje się to kosztem wydłużonego czasu ładowania i większego zużycia transferu.

I dlatego coraz częściej zastępuje się go właśnie lazy loadingiem.

Sebastian Zawadzki

Tech Lead

Wyobraźmy sobie, że strona internetowa to galeria sztuki. To porównanie świetnie obrazuje działanie dwóch najważniejszych strategii ładowania zasobów. Lazy loading jest jak inteligentny system oświetlenia. Światło zapala się tylko w tej sali, w której akurat się znajdujesz. Dzięki temu oszczędzasz energię i od razu widzisz to, co jest najistotniejsze na danej wystawie. Eager loading przypomina zapalenie wszystkich świateł jednocześnie, jeszcze zanim wejdziesz do galerii. Jest to podejście „na zapas”, które daje pozorną gotowość. Odpowiedni wybór między lazy a eager loading to kluczowa decyzja, która ma istotny wpływ na doświadczenie użytkownika.

Zastosowanie lazy loading

Lazy loading można wdrożyć w wielu miejscach na stronie – praktycznie wszędzie tam, gdzie ładowanie zasobów od razu nie ma sensu.

  1. Obrazy i grafiki

    Zdjęcia produktów, galerie, miniatury, infografiki w artykułach – wszystko, co tylko znajduje się below the fold (poza ekranem widocznym na starcie) można bez problemu załadować dopiero wtedy, gdy użytkownik przewinie stronę do miejsca, gdzie dana grafika się znajduje. I naprawdę warto to robić. Według wytycznych Mozilli dla webmasterów, w ciągu ostatniej dekady mediana rozmiarów obrazów na stronach WWW wzrosła prawie czterokrotnie na desktopach (z 250 do 900 KB) i… ośmiokrotnie na smartfonach (z 100 do 800 KB). Tak że wbrew pozorom to właśnie grafiki są największym ciężarem dla większości witryn.

  2. Materiały wideo

    Sporym obciążeniem potrafią być też filmy: te osadzane z YouTube, z Vimeo lub jako pliki wideo w HTML5. Wdrożenie lazy loading powoduje, że iframe’y z filmami (lub same pliki <video>) są ładowane dopiero wtedy, gdy użytkownik zescrolluje stronę do danej sekcji. W niektórych rozwiązaniach pokazuje się sam placeholder lub ikona odtwarzania, a wideo ładuje się dopiero po kliknięciu.

  3. Tła w CSS

    Obrazy ustawione jako tła w CSS nie wspierają natywnego lazy loadingu. Można to jednak rozwiązać za pomocą JavaScript – np. manipulując klasami CSS lub atrybutami data-src. To szczególnie przydatne w przypadku dużych grafik wykorzystywanych jako banery.

  4. Mapy interaktywne

    Osadzone na stronie mapy z Google Maps czy OpenStreetMap też da się objąć lazy loadingiem. Zwłaszcza że z reguły znajdują się one dość daleko od pierwszego widocznego ekranu: na podstronach kontaktowych albo w stopce.

  5. Systemy komentarzy

    Popularne systemy komentarzy (np. Disqus albo Facebook Comments) automatycznie ładują nie tylko sam formularz, ale i całe zewnętrzne skrypty. Można opóźnić ten proces i załadować sekcję komentarzy dopiero wtedy, gdy użytkownik przewinie do końca artykułu lub sam kliknie przycisk, aby ją wyświetlić.

  6. Widżety mediów społecznościowych i reklamy

    Przyciski „Lubię to”, posty z Instagrama, nawet i bloki reklamowe (np. AdSense) również mogą być wczytywane dopiero w momencie przewinięcia do ich sekcji.

  7. Pobieranie danych z API (infinite scroll)

    Jeśli Twoja strona wykorzystuje tzw. infinite scroll (czyli dynamiczne, „nieskończone” doładowywanie kolejnych artykułów, produktów lub postów podczas scrollowania), nie obędziesz się bez lazy loadingu. W ten sposób dane z API pobierane są tylko wtedy, gdy użytkownik zbliża się do końca aktualnie wyświetlanej listy – co ogranicza liczbę zapytań do serwera.

  8. Dynamiczne ładowanie modułów aplikacji (code splitting)

    Leniwe ładowanie można zastosować również do wczytywania modułów JavaScript w aplikacjach webowych typu SPA. W tym przypadku stosuje się technikę code splitting; dzieli się kod aplikacji na mniejsze bloki, a potem renderuje tylko te skrypty, które są potrzebne do wyświetlenia aktualnego widoku. Kod dla innych podstron/sekcji ładuje się potem w tle, na bieżąco.

Leniwe ładowanie – najważniejsze zalety

Choć mówimy o „leniwym” ładowaniu, to wcale nie znaczy, że źle wpływa na funkcjonowanie strony. Proces ten niesie ze sobą wiele korzyści, o których już po części wspomnieliśmy:

Dlaczego warto korzystać z leniwego ładowania
  1. Szybszy czas wstępnego ładowania – lazy loading zmniejsza początkowy rozmiar strony potrzebny do wczytania.
  2. Mniejsze obciążenie sieci – dzięki leniwemu ładowaniu content jest przesyłany w zasadzie na żądanie, dzięki czemu nie dochodzi do transferu niepotrzebnych danych.
  3. Oszczędzanie zasobów – lazy loading ogranicza zużycie nakładów zarówno po stronie serwera, jak i klienta, gdyż ładuje jedynie część contentu i wykonuje tylko wybrane skrypty.
  4. Lepsze user experience – krótki czas ładowania i takie funkcje jak infinite scroll oraz leniwe ładowanie obrazów sprawiają, że korzystanie ze strony jest znacznie przystępniejsze.

Lazy loading a SEO

Jeszcze do niedawna stosowanie lazy loading budziło pewne obawy wśród specjalistów SEO. Czy Googlebot zobaczy leniwie ładowane obrazy? Czy nie ucierpi na tym widoczność strony? Dziś już wiemy, że przy prawidłowym wdrożeniu takie wątpliwości można odłożyć na bok.

Po pierwsze, roboty Google potrafią bez problemu indeksować treści ładowane „leniwie”. Warunek? Trzeba je odpowiednio oznaczyć w pliku HTML. Najprostszym sposobem na wprowadzenie lazy loadingu jest nadanie elementowi strony atrybutu loading=”lazy”. To wystarczy. Obsługują go wszystkie popularne przeglądarki; nie wymaga żadnych dodatkowych bibliotek JavaScript… i jest wprost zalecany przez Google.

Poza tym pamiętaj o dwóch zasadach:

  • Nigdy nie stosuj lazy loadingu dla zasobów above the fold! Czyli głównych zdjęć artykułów, grafik hero na stronie głównej, banerów widocznych na pierwszym miejscu na ekranie użytkownika. Opóźnienie ich ładowania bezpośrednio pogorszy jeden z głównych wskaźników Core Web Vitals – Largest Contentful Paint, który opisuje… właśnie czas ładowania największego elementu na ekranie.
  • Dla wszystkich elementów ładowanych z opóźnieniem trzeba ustawiać atrybuty width oraz height – tak, aby przeglądarka wiedziała, ile przestrzeni w layoucie strony trzeba dla nich „zarezerwować”. Inaczej, gdy obraz się wczyta, może dojść do przesunięcia całego układu. A takie przeskoki nie dość, że są uciążliwe dla użytkownika, to też negatywnie wpływają na ocenę stabilności strony w CWV (odpowiedni wskaźnik to Cumulative Layout Shift).

Natywny lazy loading vs. biblioteki JavaScript

Wspomnieliśmy o atrybucie loading=“lazy” – właśnie tym sposobem wprowadza się natywny lazy loading. Dla większości stron będzie on najlepszym i najprostszym rozwiązaniem. Żadnych dodatkowych skryptów, konfiguracji czy obciążania strony kolejnymi zależnościami – wystarczy jeden dopisek w pliku HTML.

Zobacz przykład dla grafiki:

<img src="produkt.jpg" alt="Opis produktu" loading="lazy">

a tu – dla filmu osadzonego w iframe:

<iframe src="https://www.youtube.com/embed/xyz" loading="lazy"></iframe>

Jedyny minus to fakt, że natywny lazy loading działa tylko przy prostych elementach – grafikach <img> oraz iframe’ach.

Jeżeli chcesz:

  • objąć leniwym ładowaniem obrazy tła w CSS;
  • dodać animację przy ładowaniu elementów (np. efekt fade-in);
  • zastosować bardziej zaawansowane reguły ładowania (np. opóźnienie wczytywania o kilka sekund);
  • albo wprowadzić infinite scroll

musisz posłużyć się odpowiednimi bibliotekami JavaScript. Z większością „zadań specjalnych” poradzi sobie albo lazysizes (bardzo wydajna, przystosowana pod roboty Google biblioteka ze świetnym wsparciem społeczności), albo vanilla-lazyload (nieco prostsza alternatywa, dobra do wdrożeń w czystym JS).

Podsumowanie

Według HTTP Archive już 38% wszystkich stron internetowych ma ustawiony atrybut loading=”lazy” przynajmniej dla elementów graficznych.

I warto do tego grona dołączyć, bo lazy loading to jeden z najprostszych – i zupełnie bezproblemowych z perspektywy użytkownika – sposobów, aby przyspieszyć swoją stronę. Dzięki ładowaniu wybranych plików i skryptów z opóźnieniem możesz zauważalnie skrócić czas ładowania, ograniczyć transfer danych i poprawić wyniki w Core Web Vitals. Oczywiście pod warunkiem, że unikniesz podstawowych błędów przy wdrożeniu. :)

Jak sprawdzić, czy lazy loading działa poprawnie na mojej stronie?

Najprościej – skorzystaj z narzędzi deweloperskich w przeglądarce (DevTools). Wejdź na stronę, otwórz zakładkę „Network” i odśwież stronę. Następnie zobacz, które obrazy i iframe’y ładują się od razu, a które dopiero podczas scrollowania strony.

Czy atrybut loading="lazy" działa we wszystkich przeglądarkach?

Chrome, Firefox, Edge, Safari czy Opera – wszystkie popularne przeglądarki obsługują natywny lazy loading już od kilku lat. Problem z obsługą atrybutu loading=”lazy” będą miały tylko przeglądarki sprzed 2019-2020 roku. Ale je trudno dziś spotkać. ;)

Czy mogę używać lazy loadingu dla obrazów tła w CSS?

Tak, ale nie z użyciem loading="lazy". Natywny lazy loading działa tylko dla <img> i <iframe>. Aby zastosować leniwe ładowanie dla background-image, musisz to zrobić w JavaScript – np. przy użyciu biblioteki lazysizes lub vanilla-lazyload.

Czy lazy loading pomaga w SEO?

Oczywiście, jeśli poprawnie go zaimplementujesz. Lazy loading przyspiesza ładowanie strony, co pozytywnie wpływa na Core Web Vitals, a te mają spore znaczenie przy ocenie jakości strony. Ważne tylko, aby nie opóźniać ładowania elementów above the fold i zawsze dodawać atrybuty width i height do obrazów.

Oceń wpis
4.7
Ocena: 4.7 Liczba głosów: 26
Mamy więcej darmowych treści. Nie rezygnuj z nich!
Technologie, SEO, marketing - newsletter z poradami, które od razu możesz wdrożyć! Prosto na Twoją skrzynkę. Za darmo i bez spam
CAPTCHA