Nástroj pro kompresi GIF animací a lazy loading. Jak obojí zkombinovat pro maximální rychlost webu?

Ilustrace komprese animace a postupného načítání obsahu webu

Nástroj pro kompresi GIF animací a lazy loading jsou dvě samostatné optimalizační techniky, z nichž každá zvlášť zrychluje web, ovšem teprve společně přinášejí výsledky, kterých žádná z nich nedosáhne sama. 

Komprese zmenší datový objem každého souboru, lazy loading určí, kdy se soubor začne stahovat. Dohromady tak zlepšují chod GIF animace ze dvou různých aspektů: objemu dat i načasování jejich přenosu. Jak obě techniky fungují, proč se navzájem doplňují a jak je správně nasadit na webu, aniž byste museli složitě zasahovat do kódu?

GIF animace představují zvláštní kategorii problémů

Statické obrázky a GIF animace se na první pohled chovají stejně – obojí je obrázek vložený do HTML stránky. GIF animace jsou ale datově řádově náročnější než fotografie podobných rozměrů.

Komprimovaná produktová fotografie mívá 100 až 200 kB, průměrná GIF animace délky tří sekund klidně 2 až 8 MB. Stránka s pěti GIF animacemi tak přenáší při načtení 10 až 40 MB dat, a prohlížeč přitom stáhne všechny soubory najednou bez ohledu na to, zda je uživatel vůbec uvidí.

Obě techniky společně nicméně dokáží tento problém vyřešit. Komprese zmenší každý soubor na minimum nutné pro zachování vizuální kvality. Lazy loading se pak postará o to, že se soubory nestahují všechny najednou při načtení stránky, ale postupně podle toho, jak uživatel scrolluje.

Kde GIF animace na webu nejčastěji způsobují potíže

Animace umístěné v záhlaví stránky nebo v hero sekci se stahují jako první a přímo prodlužují LCP (Largest Contentful Paint – více o této metrice zde). Animace v těle článku, v patičce nebo v postranním panelu se stahují zbytečně brzy, protože uživatel k nim nemusí vůbec doscrollovat.

Animované bannery v e-shopových kategoriích zase násobí datovou zátěž každé stránky, která je zobrazena.

Ilustrace odloženého načítání obrázků při rolování stránky

Jak funguje lazy loading pro GIF animace

Lazy loading je mechanismus odloženého načítání obsahu. Prohlížeč při otevření stránky nestáhne všechny obrázky najednou, ale načítá pouze ty, které jsou ve viditelné oblasti obrazovky. Jakmile uživatel scrolluje a přibližuje se k dalšímu obrázku, prohlížeč ho teprve začne stahovat.

Pro standardní obrázky je dnes lazy loading implementován jedním atributem přímo v HTML:

html<img src=”animace.gif” loading=”lazy” alt=”Popis animace”>

Tento atribut je nativně podporován ve všech moderních prohlížečích: Chrome, Firefox, Safari i Edge ho zpracují bez nutnosti JavaScriptu nebo externích knihoven. Implementace netrvá déle než několik minut a nevyžaduje zásah do backendu ani do CSS.

Kdy lazy loading na GIF animace nasadit a kdy ne

Lazy loading by neměl být nasazen na GIF animace umístěné v záhlaví stránky nebo v první viditelné oblasti při načtení (tzv. above the fold). Prohlížeč by totiž musel animaci stáhnout okamžitě pro zobrazení a lazy loading by situaci ještě zhoršil tím, že by stažení o zlomek sekundy zdržel.

Lazy loading tudíž patří na každou GIF animaci, která není viditelná ihned po načtení stránky. Animace v hero sekci nebo v prvním vizuálním bloku lazy loading nedostane, ale vše ostatní ano.

Jak komprese a lazy loading spolupracují

Jedná se o princip dvojité vrstvy optimalizace. Lazy loading rozhoduje o tom, kdy se soubor začne stahovat. Komprese rozhoduje o tom, jak rychle se po zahájení stahování soubor přenese.

Bez komprese je lazy loading pouze odkladem nevyhnutelného: uživatel nakonec čeká na načtení velkého souboru, jen o několik sekund později. Bez lazy loadingu komprese sice zmenší každý soubor, ovšem prohlížeč je stáhne všechny najednou při načtení stránky.

Obě techniky společně tvoří smysluplný celek. Soubor je malý díky kompresi a stáhne se přesně ve chvíli, kdy ho uživatel potřebuje díky lazy loadingu. Výsledkem je výrazně kratší doba do prvního interaktivního stavu stránky a nižší celková datová spotřeba při průměrné návštěvě.

Praktický postup kombinace obou technik

Krok 1: audit stávajících GIF animací

Před zahájením optimalizace zjistěte, kolik GIF animací na webu máte, kde jsou umístěny a jak jsou velké. Nástroj Google PageSpeed Insights zobrazí v sekci Příležitosti konkrétní soubory s jejich aktuální velikostí a odhadovanou úsporou po optimalizaci. GTmetrix nabídne podobný přehled s možností filtrovat soubory podle typu.

Výsledkem auditu by měl být seznam GIF souborů seřazený podle dvou kritérií: velikost souboru (od největšího) a pozice na stránce (above the fold vs. below the fold). Tento seznam určí pořadí, ve kterém optimalizaci provedete.

Krok 2: komprese GIF souborů

Každý GIF soubor ze seznamu zpracujte GIF optimalizátorem online před nahráním na web. Nástroj optimalizuje mezisnímkové rozdíly, redukuje barevnou paletu při stálém zachování vizuální kvality a odstraní zbytečná metadata. Výsledný soubor nahraďte na serveru původní verzí.

Při kompresi sledujte vizuální výsledek, zvláště u animací s fotografickým obsahem nebo jemnými barevnými přechody. Cílová velikost souboru závisí na délce a obsahu animace, ovšem jako orientační hodnota platí, že animace kratší než dvě sekundy by měla po kompresi mít pod 500 kB, animace delší než tři sekundy pod 1,5 MB.

Krok 3: implementace lazy loadingu

Po nahrazení souborů komprimovanými verzemi přidejte atribut loading=”lazy” ke každé GIF animaci, která se nachází below the fold. Animace v hero sekcích a prvních vizuálních blocích přeskočte.

Pokud web běží na WordPressu, lazy loading pro obrázky nastavuje od verze 5.5 automaticky. Ovšem toto automatické nastavení se týká statických obrázků vložených přes editor. GIF animace vložené přes HTML bloky nebo šablony vyžadují ruční přidání atributu.

Krok 4: ověření výsledků

Po implementaci spusťte znovu PageSpeed Insights a porovnejte skóre s výsledky před optimalizací. Sledujte zejména tři metriky:

  • LCP (Largest Contentful Paint),
  • celkovou datovou hmotnost stránky
  • a počet požadavků stažených při prvním načtení.

Zlepšení ve všech třech oblastech potvrdí, že kombinace komprese a lazy loadingu funguje správně.

Kdy přejít od GIF k modernějším formátům

Komprese a lazy loading jsou optimalizace pro existující GIF soubory. Pokud web pravidelně produkuje nový animovaný obsah, může se vám hodit kompletní přechod na formát, který je datově efektivnější od základu.

Animované WebP soubory mají při srovnatelné vizuální kvalitě v průměru o 40 až 60 % menší velikost než GIF. Krátká videa ve formátu MP4 jsou ještě úspornější a moderní prohlížeče je přehrají automaticky bez ovládacích prvků při nastavení atributů autoplay, loop a muted. Pro uživatele tu není žádný rozdíl oproti GIF animaci, ovšem datová náročnost je zlomková.

Pro stávající GIF soubory na webu nicméně zůstává kombinace komprese a lazy loadingu nejrychlejší cestou ke zlepšení výkonu bez nutnosti měnit formát nebo výrazně přepracovávat obsah.

Simona Šmerdová