Jak jsme zrychlili PrestaShop e-shop o 63 % beze změny hostingu
Pomalý e-shop stojí zákazníky i tržby — a většina majitelů e-shopů automaticky sáhne po dražším hostingu. My jsme na jednom PrestaShop 8 projektu ukázali, že problém často leží jinde: v kódu samotném. Tady je, jak jsme diagnostikovali a odstranili úzké hrdlo, které zpomalovalo celý e-shop, a snížili dobu načítání o 63 % — bez jediné koruny navíc za server.
Zadání: e-shop, který se "zasekával"
Klient provozoval e-shop na PrestaShop 8 se šablonou postavenou na CreativeElements (POS téma). Stránky se načítaly znatelně pomaleji, než by u tohoto rozsahu katalogu měly, a to i přes solidní hosting. Standardní rady typu "kupte si rychlejší server" nebo "zapněte cache" v tomto případě nestačily — problém byl hlouběji, v samotné logice šablony.
Diagnostika: kde skutečně mizí čas
Místo hádání jsme si nejdřív změřili, kde e-shop tráví nejvíc času. Postupným instrumentováním jednotlivých hooků (míst, kde PrestaShop spouští vlastní i modulový kód při renderování stránky) jsme zúžili podezření na jedinou funkci:
ImageRetriever::getAllProductImages()
Tahle funkce se volala při každém vykreslení stránky s produkty — a u katalogu s větším počtem obrázků na produkt zbytečně načítala a zpracovávala mnohem víc dat, než stránka reálně potřebovala k zobrazení.
Řešení: přesně cílená oprava, ne plošný zásah
Namísto přepisování celé šablony nebo výměny modulu jsme vytvořili vlastní override — funkci getCoverProductImages(), která načítá jen ty obrázky, které se na dané stránce skutečně zobrazují (typicky hlavní/coverový obrázek u výpisu produktů), místo aby pokaždé stahovala kompletní sadu obrázků všech variant.
Tento typ zásahu je typický příklad toho, proč se vyplatí umět číst PrestaShop jádro do hloubky — místo plošného "vypnutí" funkcionality jsme jen upravili, kdy a kolik dat se skutečně natahuje.
Výsledek
- Doba načítání klíčových stránek klesla o 63 %
- Žádná změna hostingu, žádné navýšení měsíčních nákladů
- Žádný dopad na vzhled ani funkčnost e-shopu — úprava byla čistě na úrovni backendové logiky
Ponaučení pro ostatní PrestaShop e-shopy
Pokud váš e-shop běží pomaleji, než by měl, dřív než sáhnete po dražším serveru, stojí za to nechat si e-shop profilovat na úrovni hooků a konkrétních funkcí. Velmi často se ukáže, že problém není v hardwaru, ale v tom, že šablona nebo modul dělá zbytečně moc práce navíc — a to jde opravit bez rizika a bez nutnosti platit víc za hosting.
Řešíte podobný problém s pomalým PrestaShop e-shopem? Napište mi, rád se podívám, kde přesně se ztrácí výkon vašeho e-shopu.