devnews.pl

Main Menu

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania

logo

devnews.pl

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania
Narzędzia
Home›Narzędzia›Natywne lazy-loading dla iframe już dostępne

Natywne lazy-loading dla iframe już dostępne

By Bernadeta Zapała
27 lipca 2020
271
0
Share:

Za pośrednictwem atrybutu loading w przeglądarce Chrome 76 oraz Firefox pojawiło się natywne „leniwe ładowanie” obrazów. Dzisiaj udostępniono tę opcję z funkcją opóźnienia dla ramek iframe. Natywne lazy-loading znormalizowano i dołączono do przeglądarek opartych na Chromium.

Funkcja opóźniania ładowania ramek iframe odwleka ich załadowanie dopóki znajdują się poza ekranem. Jeśli użytkownik przesunie ekran w ich pobliże, obraz się załaduje. Dzięki temu oszczędza się dane, zmniejsza zużycie pamięci oraz przyspiesza ładowanie innych elementów strony. Poniżej najprostszy sposób załączenia ładowania w formie kodu i filmu:

<iframe src="https://example.com"
        loading="lazy"
        width="600"
        height="400"></iframe>
https://storage.googleapis.com/web-dev-assets/iframe-lazy-loading/lazyload-iframes-compressed.webm

Przyczyny natywnego lazy-loading elementów iframe

Często na stronach dostępne są osadzone elementy zewnętrzne. Są to reklamy, odtwarzacze wideo czy posty w mediach społecznościowych (np. Facebook czy Twitter). Po wejściu na stronę znajdują się one albo w widoku użytkownika, albo poza nim. Mimo tego, że element nie jest widoczny od razu, użytkownik ponosi koszty pobierania danych elementów iframe.

Badania przeprowadzone przez Chrome wykazały zmniejszenie pobierania danych o nawet 2-3%. Redukcja FCP (First Contentful Paint) wyniosła 1-2%, a FID 2% na 95 percentylu.

Natywne lazy-loading – działanie 

Atrybut loading obsługuje trzy podstawowe wartości:

  • lazy – leniwe ładowanie,
  • eager – wczytaj od razu,
  • auto – przeglądarka określa, czy element iframe ma się wczytać leniwie. Jest to obecnie domyślna wartość w Chrome.

Natywne lazy-loading

Jeśli nie określimy atrybutu, otrzymamy taki sam wynik, jak niecierpliwe ładowanie zasobu. W przypadku wersji uproszczonej Chrome użyje auto wartości.

Korzystanie z atrybutu loading w elementach iframe – przykład

<!-- Lazy-load the iframe -->
<iframe src="https://example.com"
        loading="lazy"
        width="600"
       height="400"></iframe>
<!-- Eagerly load the iframe -->
<iframe src="https://example.com"
        width="600"
        height="400"></iframe>
<!-- or use loading="eager" to out of automatic
lazy-loading in Lite Mode -->
<iframe src="https://example.com"
        loading="eager"
        width="600"
        height="400"></iframe>

Specyficzne zachowanie atrybutu loading

W przypadku elementów iframe atrybut loading działa inaczej niż na obrazy. Wszystko zależy od tego, czy element iframe jest ukryty. Przeglądarka Chrome sama określa jego stan, korzystając z następujących kryteriów:

  • Wymiary – szerokość i wysokość elementu iframe to 4px lub mniej.
  • Występują elementy display: none lub visibility: hidden.
  • Umieszczenie – element iframe jest umieszczony poza ekranem przy użyciu ujemnego pozycjonowania X lub Y.

W przypadku spełnienia któregokolwiek z tych warunków, Chrome uznaje go za ukryty i przeważnie nie ładuje go leniwie.

Co ciekawe, w przypadku przełączenia na lazy-loading strony Youtube na Chrome zauważono nawet 10 sekundowe oszczędności. Strony zyskują dzięki temu większą interaktywność na urządzeniach mobilnych.

Natywne lazy-loading – oszczędność danych

Przykładowe ilości oszczędzonych danych przy popularnych serwisach:

  • YouTube – zapisuje ~ 500 KB przy początkowym wczytywaniu strony
  • Instagram – zapisuje nie więcej niż 100 KB spakowane gzipem przy początkowym załadowaniu
  • Spotify – oszczędza 514 KB przy początkowym ładowaniu

W przypadku facebookowej wtyczki Like (pokazującej, kto polubił stronę) jest to ok. 215KB zasobów, z czego 197KB to JavaScript. Często pojawia się ona na końcu strony, więc jej szybkie ładowanie poza ekranem może nie być optymalne.

Wniosek

Natywne lazy-loading, dzięki obsłudze ramek iframe z opóźnieniem, poprawia wydajność stron internetowych.

TagsChromeChromiumiframeNatywne lazy-loading

Share:

  • Narzędzia

    Windows Terminal Preview 1.7 z lepszym zarządzaniem oknami

  • React Easy State
    Bez kategoriiFrontend

    React 17.0 stabilny, oficjalnie wydany!

  • Narzędzia

    Rozszerzenie C++ 1.0 dla Visual Studio Code

  • 13 kwietnia 2021

    TypeScript 4.3 beta z oddzielnymi typami zapisu

  • 7 kwietnia 2021

    Billboard.js 3.0 z nowym typem świecy

  • 2 kwietnia 2021

    Silnik V8 9.0 beta udostępniony

  • 1 kwietnia 2021

    ReacType 6.0 z nowym dashboardem

  • 29 marca 2021

    Udostępniono Android 12 Developer Preview 2

  • 24 marca 2021

    Git 2.31 dostępny z konserwacją w tle

  • 19 marca 2021

    Relay Hooks – nowy zestaw interfejsów API

  • 18 marca 2021

    Deno 1.8 ze wsparciem interfejsu API WebGPU 

  • 16 marca 2021

    React Native 0.64 z silnikiem Hermes na iOS

  • 9 marca 2021

    Windows Terminal Preview 1.7 z lepszym zarządzaniem oknami

  • 3 marca 2021

    Vite 2.0 wydane z nowymi wtyczkami

  • 25 lutego 2021

    ReacType 5.0 – zmiany we wprowadzaniu komponentów

  • 23 lutego 2021

    Dapr v.1.0 gotowy do fazy produkcji

  • 22 lutego 2021

    ReScript 9.0 z zewnętrzną konfiguracją stdlib

  • 22 lutego 2021

    One UI 3.1 z ciekawymi nowościami dla urządzeń Samsunga

  • 22 lutego 2021

    Windows Terminal Preview 1.6 z nową sekcją ustawień

  • 15 lutego 2021

    Visual Studio Code 1.53 z ulepszeniami debugowania

  • 8 lutego 2021

    Edge 89 beta, Edge Dev 90 i nowości na kanale Canary

  • 2 lutego 2021

    Firefox 85 i Firefox Nightly – nowe wersje przeglądarki Mozilli

  • 29 stycznia 2021

    Billboard.js 2.2.0 z nowymi funkcjami wykresów

  • 26 stycznia 2021

    Kendo UI R1 2021 – nowości dla bibliotek

  • 21 stycznia 2021

    Narzędzie Vno – połączenie Vue i Deno

  • 19 stycznia 2021

    GitHub Enterprise Server 3.0 RC – kandydat do wydania

  • 15 stycznia 2021

    TypeScript 4.2 Beta z ulepszeniami typów krotek

  • 13 stycznia 2021

    Styczniowy Patch Tuesday z luką 0-day

  • 11 stycznia 2021

    Safari Technology Preview 118 dostępne dla programistów

  • 8 stycznia 2021

    Microsoft Launcher na Androida z usprawnionym dotykiem

  • 7 stycznia 2021

    WebStorm 2020.3.1 dostępny dla urządzeń z Apple Silicon

  • 22 grudnia 2020

    ReScript 8.4 z przypiętymi zależnościami

  • 14 grudnia 2020

    Edge 88 beta i przeglądarka na kanale Canary dostępne!

 

 

Jesteśmy pasjonatami najnowszych technologii w świecie programowania. Zbieramy dla Was informacje i porady z całego świata, które sprawią, że Twoja praca stanie się jeszcze bardziej efektywna.

Obserwuj nas codziennie, aby być na bieżąco oraz śmiało udostępniaj nasze posty.

Zespół DevNews

Kategorie

  • Backend
  • Bez kategorii
  • Frontend
  • Gadżety
  • Informacje
  • Języki programowania
  • Narzędzia
  • QA
  • Systemy i przeglądarki

OBSERWUJ NAS

KONTAKT

Chcesz się z nami skontaktować?

Napisz do nas wiadomość: kontakt@devnews.pl

www.devnews.pl | DEVNEWS 2020 | Newsy i ciekawostki ze świata IT