Jak zvýšit rychlost Adobe Commerce/Magento e-shopu

Na rychlosti záleží! Ne nadarmo je rychlost načítání webových stránek součástí metrik Google Core Web Vitals. Přímo totiž ovlivňuje konverzní poměr, pozici v SERP (ve výsledcích vyhledávání) a celkovou spokojenost zákazníků. Podle dat Google opustí stránky více než polovina mobilních návštěvníků, pokud se nenačtou do 3 sekund. Co můžete tedy podniknout, abyste zrychlili váš Adobe Commerce / Magento e-shop?

rychlost e-shopu

Proč je rychlost důležitá?

  • Zákaznická zkušenost: Pomalejší stránky mohou vést k vyššímu bounce rate. Vyšší rychlost načítání stránek zlepšuje zákaznickou zkušenost a zvyšuje pravděpodobnost nákupu.
  • SEO: Google a další vyhledávače používají rychlost načítání stránek jako jeden z faktorů při hodnocení webových stránek a tím pádem ovlivňuje pořadí zobrazování ve výsledcích vyhledávání.
  • Konverzní poměr: Rychlejší stránky často vedou k vyšším konverzním poměrům, protože zákazníci jsou více motivovaní dokončit nákup.

Jak optimalizovat rychlost?

1. Výběr vhodného hostingu

Je důležité vybrat poskytovatele, který nabízí spravovaný hosting optimalizovaný přímo pro Adobe Commerce/Magento, jako jsou například Nexcess, Cloudways nebo Hypernode. Hostování na serverech s rychlými CPU a disky je zásadní. Používejte rychlé disky nejen pro základní lokaci systému, ale také pro databázi, Varnish a Redis cache.

PRO DEVELOPERY
Pro efektivní výkon je doporučeno mít lokální kopii Redis cache na rychlých discích, například s využitím Cm_Cache_Backend_File, kde základní lokace může být /dev/shm/, což zajišťuje ukládání do paměti. Dále, pokud je Redis nainstalován na vzdáleném serveru, musíte zajistit dostatečný síťový kanál mezi webovými uzly a cachovacím serverem, aby se předešlo úzkým místům při operacích čtení/zápisu.

Pomoci Vám může i integrace vrstvy CDN (Content Delivery Network), která výrazně zrychlí načítání statického obsahu tím, že ho doručuje z geograficky blízkých serverů. Populární CDN služby zahrnují Cloudflare nebo Amazon CloudFront, Adobe Commerce používá Fastly. Záleží i na umístění datového centra, které ovlivňuje zpoždění webu na frontendu.

PRO DEVELOPERY
Zkrácení vyhledávání DNS (zjišťování, ke které IP adrese patří název domény), kdy prohlížeč musí počkat na dokončení této akce a teprve poté může pro každý požadavek něco stáhnout, je další místo, kde se dá ušetřit čas. Lze toho dosáhnout použitím HTTP značky <link> s atributem rel nastaveným na dns-prefetch. Tato značka se umisťuje do hlavičky.

2. Správné nasazení Magento a produkční nastavení

Vždy udržujte Magento v produkčním režimu. To zahrnuje spuštění optimalizace autoloaderu po generování produkčních souborů v adresáři generated, vhodné nastavení OPcache a optimalizaci nastavení MySQL.

3. Indexování a optimalizace dotazů

Je třeba pravidelně kontrolovat a optimalizovat indexy databáze. Databáze Adobe Commerce (stejně jako jakákoliv jiná databáze) je citlivá na množství paměti dostupné pro ukládání dat a indexů. Správné indexování může výrazně zlepšit výkon dotazů. Chcete-li efektivně využívat indexaci dat MySQL, mělo by se množství dostupné paměti blížit minimálně polovině velikosti dat uložených v databázi.

Např. pokud se často dotazujete na produkty podle ceny, ujistěte se, že sloupec s cenou je indexován. Optimalizujte dotazy do databáze, abyste minimalizovali jejich náročnost na výkon. Používejte nástroje jako MySQL Slow Query Log k identifikaci a optimalizaci pomalých dotazů.

PRO DEVELOPERY
Optimalizujte nastavení innodb_buffer_pool_instances, abyste se vyhnuli problémům s přístupem více vláken ke stejné instanci. Hodnota parametru max_connections by měla odpovídat celkovému počtu vláken PHP nakonfigurovaných v aplikačním serveru. Pro výpočet nejlepší hodnoty parametru innodb-thread-concurrency použijte následující vzorec: innodb-thread-concurrency = 2 * (NumCPUs+NumDisks). Doporučuje se také snížit úroveň izolace transakcí na READ-COMMITTED, což může přinést značné zlepšení výkonu.

4. Optimalizace frontendu

Minifikujte a spojte CSS a JavaScript soubory, aby se snížil počet požadavků na server. Nástroje jako vestavěné Magento minify tools nebo externí služby jako Cloudflare mohou pomoci.

Pro obrázky implementujte lazy loading, aby se načítaly jen tehdy, když jsou potřeba. Toho lze dosáhnout pomocí knihoven jako Lozad.js nebo přímo prostřednictvím HTML5 atributu loading="lazy". Dále využijte HTTP/2 pro rychlejší načítání stránek díky paralelnímu zpracování požadavků.

PRO DEVELOPERY
Nastavení PHP-FPM
Optimalizace těchto nastavení závisí na výsledcích výkonnostních testů.

ByteCode – Chcete-li maximalizovat rychlost Adobe Commerce v PHP, musíte aktivovat modul opcache a správně jej nakonfigurovat.

APCu – Adobe doporučuje povolit rozšíření PHP APCu a nakonfigurovat nástroj Composer tak, aby optimalizoval maximální výkon. Toto rozšíření ukládá do mezipaměti umístění otevřených souborů, což zvyšuje výkon volání serveru Adobe Commerce, včetně stránek, volání Ajaxu a API rozhraní.

Realpath_cache – optimalizace realpath_cache umožňuje procesům PHP ukládat cesty k souborům do mezipaměti namísto jejich vyhledávání při každém načtení stránky.

5. Ukládání do mezipaměti (caching)

Zrychlení načítání stránek pomáhá, pokud implementujete a správně nakonfigurujte Full Page Cache, jako je např. Varnish. Nainstalujte Varnish na samostatný server před webovou vrstvu. Měl by přijímat všechny příchozí požadavky a poskytovat kopie stránek v mezipaměti. Aby mohl Varnish efektivně pracovat se zabezpečenými stránkami, lze před něj umístit proxy server pro ukončení SSL. K tomuto účelu lze použít server Nginx.

Webový server nginx poskytuje vyšší výkon a lze jej snadno nakonfigurovat pomocí vzorového konfiguračního souboru z Adobe Commerce (nginx.conf.sample).

  • Správné nastavení PHP-FPM s TCP
  • Povolte HTTP/2 a Gzip
  • Optimalizujte pracovní připojení

Dalším důležitým nástrojem, který může výrazně zlepšit výkon vašeho e-shopu pomocí ukládání dat do mezipaměti, je Redis. Pokud je Redis nainstalován na vzdáleném serveru, musíte zajistit dostatečnou síťovou kapacitu  mezi webovými uzly a cachovacím serverem, abyste zabránili vzniku úzkých míst při operacích čtení/zápisu.

Pro optimální výkon by měl mít Redis alokován dostatek paměti, aby mohla pojmout všechny klíčové mezipaměti. Bloková mezipaměť je klíčovým faktorem při určování množství paměti, které je třeba nakonfigurovat. Bloková mezipaměť roste vzhledem k počtu stránek na webu a počtu zákaznických segmentů.

6. Komprimace obrázků

Pro zjednodušení procesu můžete integrovat nástroje, které automaticky komprimují obrázky při jejich nahrávání do systému, například TinyPNG nebo ImageOptim. Používejte moderní formáty obrázků jako WebP pro menší velikost souborů při zachování kvality. Magento podporuje WebP nativně. Dále implementujte responzivní obrázky pomocí atributů srcset a sizes v HTML, aby se načítaly správné verze obrázků v závislosti na zařízení.

7. Monitoring a analýza výkonu

Používejte nástroje jako Google Analytics a další specializované nástroje pro sledování výkonu a identifikaci problémů. New Relic nebo Blackfire jsou vynikající pro hlubší analýzu a profilování výkonu.

8. Pravidelné aktualizace

Zajistěte, aby byl váš systém pravidelně aktualizován, včetně jádra Adobe Commerce, modulů a bezpečnostních fixů. Udržování aktuální verze zajišťuje nejen bezpečnost, ale i výkon. Pokud není možné provádět aktualizace po každé nové verzi, aktualizujte alespoň tehdy, když Adobe Commerce zavede významné optimalizace výkonu.

Před nasazením aktualizací na produkci je vždy důkladně otestujte, aby se předešlo problémům s kompatibilitou nebo výkonem. Doporučuje se vytvořit staging server, kde můžete aktualizace testovat před jejich nasazením.

9. Optimalizace datového modelu

Mnoho problémů pramení z dat, vč. špatných datových modelů, nesprávně strukturovaných dat a dat bez indexu. Pokud testujete několik připojení najednou, vypadají v pořádku, ale po nasazení na produkci může dojít k vážnému snížení výkonu. Je důležité, aby systémoví integrátoři věděli, jak navrhnout datový model (zejména pro atributy produktů), vyhnuli se přidávání zbytečných atributů a zachovali ty povinné, které ovlivňují obchodní logiku (například ceny, skladovou dostupnost a vyhledávání). 

U atributů, které nemají vliv na obchodní logiku, ale přesto musí být na frontendu přítomny, je dobré je spojit (např. ve formátu JSON). Pro optimalizaci výkonu platformy platí, že pokud není vyžadována obchodní logika z dat nebo atributů převzatých z PIM nebo ERP, není třeba tento atribut do Adobe Commerce přidávat.

10. Headless architektura

Headless architektura odděluje vrstvu storefrontu od samotné platformy. Tento design umožňuje vyšší flexibilitu a rychlost, protože platforma již nezpracovává požadavky přímo, ale podporuje vlastní storefronty prostřednictvím rozhraní GraphQL API.

11. Design umožňující škálovatelnost

Škálovatelnost je důležitá pro firmy, které provozují kampaně a často se potýkají s návštěvnickými  špičkami. Škálovatelná architektura a návrh aplikace umožňují v době špičky navýšit zdroje a po jejím skončení je snížit, čímž optimalizujete náklady na infrastrukturu. Nicméně je třeba mít na paměti, že škálovatelnost může v některých případech snížit výkon u menších projektů, a je proto důležité zvážit její implementaci na základě velikosti a potřeb vašeho projektu.

Zpět na články
Sdílet článek:
Spojte se s námi

    Rezervujte si schůzku zde nebo vyplňte tento formulář a my se vám co nejdříve ozveme:

    Beru na vědomí zpracování osobních údajů.