Specialista na WEB
od 1999

Skáče vám web jako koza? Jak se zbavit skákajícího obsahu webu

Někdy trvá dlouho, než se načtou obrázky a potom když se objeví, poskočí celý obsah. Uživatelé se poté ztrácí v tom, kde na webu skončili. Máme řešení.

Co s tím naši programátoři umí udělat?

Lazy loading

Lazy loading je technika, kdy se soubory stahují, až když je holá struktura webu načtená. Díky tomu velké soubory, např. obrázky, neblokují načítání celého webu a web se načte rychleji. Nejdříve se načte web bez obrázků. Ty se stáhnou až později. Tudíž načítání webu působí několikanásobně rychleji. Uživatelé starších či méně výkonných zařízení poznají zrychlení nejvíce, jelikož nebudou koukat např. 15 s na bílou stránku, ale jen třeba 3 s a zbylých 12 s se budou na pozadí stahovat obrázky.

Lazyloading

Techniky lazy loadingu

Proměna malého obrázku na velký

První a nejpoužívanější technikou je načtení opravdu malého obrázku (10 px na šířku, 1 kB) místo velkého. Malý obrázek se rozostří a potom se začne dodatečně načítat ten samý velký obrázek. Po načtení velkého obrázku se vzájemně malý a velký prolnou. Jelikož se na začátku načítá malý obrázek, tak je dobrým zvykem mít pod obrázkem světle šedou barvu. Šedý box poté indikuje, že na jeho místo patří nějaký vizuální obsah. To většinou uvidí jen lidé s pomalými zařízeními či internetem. Tuto techniku používá např. MediumInstagram ve svých příspěvcích.

Nahrazení velkého obrázku zajímavým grafickým prvkem

Druhá technika vynechává načtení malého obrázku. Místo malého obrázku dosadí nějaký vizuálně zajímavý obsahu. Nejčastěji se jedná o barvu či barevný přechod. Zbytek je stejný jako u předchozího. Tuto techniku používá např. TumblrPinterest ve svých příspěvcích.

Jak probíhá načítání obrázků?

Než se obrázek načte, má 0 px na výšku, potom probíhá automatický výpočet jeho skutečné výšky. Nejdříve se nastaví fixní výška, která se po načtení velkého obrázku změní na skutečnou výšku obrázku. Než se načte, vidíme šedý nebo jinak barevný podklad. Už tím se zmírní skákání obsahu webu.

V druhém kroku se před započetím načítání obrázku zjistí jeho velikost nebo poměr stran a na základě toho se nastaví šířkavýška kontejneru, do kterého se obrázek načte. Internetový/webový prohlížeč (browser) tudíž už ví, jak má být obrázek vysoký, takže obsah neskáče.

Oba přístupy se dají vylepšit v tom, jak přistupují k výšce toho, co je vidět před načtením obrázku. Používá se pokaždé jen jedna z uvedených technik. Kdyby ne, lazy loading samotný bude způsobovat výrazné skákání obsahu, kdy se bude v závislosti na načítání obrázků měnit výška celého webu.

Je možné optimalizovat ještě dál?

Ano! Doporučujeme načítat jen obrázky, které uživatel zrovna vidí. Takže např. pokud se mi vejdou 4 články na obrazovku a na stránce je článků 20, tak se mi v prvním momentě dynamicky načtou jen 4 obrázky. Další obrázek se mi začne načítat až v momentě, kdy začnu scrollovat a blížit se k němu. Tato funkce především šetří návštěvníkům mobilní data.

Perličkou na dortu je načítání obrázků odpovídající velikosti kontejneru, ve kterém se nachází. Tzn. pokud mám monitor o šířce 1 600 px, web je rozpůlený do dvou stejně širokých sloupců/kontejnerů a v jednom ze sloupců je obrázek, tak by onen obrázek měl mít 800 px. Pokud z nějakého důvodu toto není možné implementovat, tak existuje jednodušší, ale mnohem méně spolehlivá technika. Šířka načítaného obrázku se v takovém případě bere podle šířky obrazovky, což v našem případě znamená 2× tak velký obrázek, a to je velmi neefektivní. Proto doporučujeme první verzi, tzn. načítat obrázky podle šířky kontejneru, ve kterém se nachází.

Preloading

Preloading je přesný opak lazy loadingu, tzn. stahuje věci, které ještě nepotřebuji, ale ideálně potřebovat v blízké době budu. Zde je ale velmi důležité pořadí stahování. Preloading by nikdy neměl brát prostor věcem, které jdou vidět teď. Tudíž by preloadování mělo začít až v momentě, kdy je vše pro aktuální stránku načtené.

Tato funkce se dá použít např. v blogu, kde vím, že moji návštěvníci nejvíce otevírají nejnovější 2 články. V takovém případě během pár vteřin neaktivity, kdy uživatel čte nadpisy článků, mohu stáhnout obrázky oněch článků. Poté, co uživatel jeden ze dvou článků otevře, se vynechá stahování obrázků. Tudíž, čím více obrázků v článku bude, tím více vteřin čekání na načtení obrázků ušetřím.

Pokud je použit v kombinaci s lazy loadingem, tak nastává jeden zásadní problém. Je nemožné nebo velmi náročné zjistit, jak široký obrázek mám přednačíst.

Preloading se hodí především tam, kde vím alespoň na 50 %, že se přednačtený obsah bude návštěvníkům hodit. Zároveň je extrémně důležité spustit preloading jen těm návštěvníkům, kteří nemají mobilní data. V opačném případě se na vás budou obracet rozzuření návštěvníci s vyčerpanými mobilními daty. Tudíž je to mocný, ale potenciálně nebezpečný nástroj. Musí se používat s rozmyslem.

Děkujeme, že jste dočetli až sem! Obrázky jsou nedílnou součástí dnešních webů a nejspíš se to nezmění ani v blízké budoucnosti. Lidé zpracovávají obrázky 60 000× rychleji než text. V moderním webdesignu jsou obrázky velmi důležité a je škoda, když brzdí celý web. Optimalizace obrázků může neuvěřitelně zrychlit web a často je to to jediné, co potřebuje.

Nevíte, jak na optimalizaci? Nevadí! Jsme tu pro vás, připraveni použít tyto a mnohé jiné techniky na zrychlení a optimalizaci vašeho webu.

Mohl by vás zajímat i článek: Tvorba webových aplikací.

Možná již nyní máte dostatek informací a mohla by se vám hodit „rychlá tlačítka“:
Pokud jste zvídavější, pokračujte dále ... kompletní menu nebo na Úvodní stranu
Zůstaňte v obraze - přihlašte se k odběru našeho newsletteru
Staňte se odběratelem užitečných informací z našeho oboru. Tipy a triky, jak využít potenciál webů, návody, SEO, bezpečnost ... Pokud si myslíte, že tyto informace oceníte, vyplňte formulář a odešlete.

captcha