Gidai · · 3 min skaitymo
Kodėl jūsų PrestaShop parduotuvė lėta ir kas iš tikrųjų padeda
Kur PrestaShop praranda greitį (serveris, moduliai, paveikslėliai, skriptai ir duomenų bazė) ir ką verta taisyti pirmiausia – nuo Performance nustatymų iki lentelių, kurios nepastebimai išauga iki milijonų eilučių.
Lėta parduotuvė pardavimų netenka dukart: lankytojai išeina dar neužsikrovus puslapiui, o paieškos sistemos lėtus puslapius rodo žemiau. Gera žinia ta, kad PrestaShop retai būna lėta dėl pačios PrestaShop. Dažniausiai kaltos kelios konkrečios priežastys, o kai kurias jų galima sutvarkyti per kelias minutes.
Šiame gide einame nuo serverio iki naršyklės ta pačia tvarka, kuria parduotuves tikriname patys.
Pirmiausia išmatuokite
Prieš ką nors keisdami, užsirašykite, kokia padėtis dabar:
- PageSpeed Insights (pagespeed.web.dev) – pradiniam puslapiui, vienam kategorijos ir vienam prekės puslapiui, mobiliojo telefono režimu. Jis rodo Core Web Vitals rodiklius: LCP (kaip greitai pasirodo pagrindinis turinys), INP (kaip greitai puslapis sureaguoja į paspaudimus) ir CLS (kiek šokinėja puslapio išdėstymas).
- Serverio atsako laikas. Naršyklės kūrėjo įrankiuose skirtukas Network rodo, kiek laiko užtrunka pirmasis HTML dokumentas. Jei vien jis viršija vieną sekundę, pradėkite nuo serverio ir duomenų bazės, o ne nuo paveikslėlių.
Po kiekvieno pakeitimo matuokite tuos pačius puslapius. Kitaip nežinosite, kas padėjo.
Serveris
- PHP versija. Naujesnės PHP versijos pastebimai greitesnės. PrestaShop 8 palaiko PHP iki 8.1, o PrestaShop 9 veikia su PHP nuo 8.1 iki 8.4. Parduotuvė, vis dar veikianti su PHP 7, be reikalo atiduoda dalį greičio.
- OPcache turi būti įjungtas. Be jo PHP kiekvieną failą kompiliuoja iš naujo per kiekvieną užklausą. Dauguma talpinimo paslaugų jį įjungia, bet ne visos.
- Pakankamai išteklių. Pigaus bendro talpinimo mažam katalogui gali užtekti, tačiau jis sulėtėja, kai prekių būna tūkstančiai, kombinacijų daug arba naudojami sluoksniniai filtrai.
Performance puslapis
Skiltyje Advanced Parameters > Performance yra svarbiausi nustatymai, ir po paleidimo ar atnaujinimo jie dažnai lieka kūrimo režime:
- Šablonų kompiliavimas: veikiančioje parduotuvėje – Never recompile template files. Perkompiliavimas skirtas tik kūrimui.
- Talpykla (Cache): įjunkite Smarty talpyklą.
- Derinimo režimas (Debug mode): išjungtas. Jis lėtina kiekvieną puslapį ir rodo vidinę informaciją.
- CCC (sujungimas, suspaudimas ir talpinimas) CSS ir JavaScript failams: naršyklei tenka atsisiųsti mažiau failų. Įjungę išbandykite parduotuvę, nes prastai parašytas modulis gali sugesti, kai jo skriptai sujungiami.
Moduliai
Kiekvienas aktyvus modulis gali pridėti duomenų bazės užklausų, CSS ir JavaScript kiekvienam puslapiui, net ten, kur nieko nedaro. Kelerius metus veikiančiose parduotuvėse dažnai būna dešimtys modulių, kurių diegimo niekas nebeprisimena.
- Pašalinkite modulius, kurių nenaudojate. Išjungti moduliai geriau nei aktyvūs, bet pašalinti – geriausia.
- Atkreipkite dėmesį į modulius, kurie savo skriptus įkelia kiekviename puslapyje, nors jų reikia tik viename, pavyzdžiui, prekės puslapio valdiklis, įkeliamas pradiniame puslapyje.
- Derinimo režimas su profiliavimo įrankiu parodo, kurie „hook'ai“ ir moduliai puslapyje užima daugiausia laiko. Taip randate tikrąjį kaltininką, o ne spėliojate.
Paveikslėliai
Paveikslėliai dažniausiai yra sunkiausia puslapio dalis.
- Įkelkite tinkamo dydžio. 5000 pikselių nuotrauka tiesiai iš fotoaparato per didelė bet kuriam ekranui. PrestaShop sukuria mažesnes kopijas, tačiau originalas vis tiek užima vietą diske ir laiką.
- Šiuolaikiniai formatai. Naujesnės PrestaShop versijos gali generuoti ir WebP ar AVIF paveikslėlius (Design > Image Settings). Tos pačios kokybės jie daug mažesni nei JPEG. Pakeitę formatus, sugeneruokite miniatiūras iš naujo.
- Atidėtas įkėlimas (lazy loading) paveikslėliams žemiau pirmojo ekrano, bet ne pagrindiniam paveikslėliui viršuje. Jis turi įsikelti pirmas, nes dažniausiai būtent jis yra LCP elementas.
Tema ir skriptai
- Šriftai, slankikliai, pokalbių valdikliai, sekimo pikseliai ir atsiliepimų ženkleliai – visa tai sumuojasi. Kiekvienas turi užsitarnauti savo vietą.
- Išorinių skriptų (pokalbių, pikselių, A/B testavimo įrankių) jūsų parduotuvė negali talpinti, be to, jie gali blokuoti puslapį. Kur įmanoma, įkelkite juos vėliau.
- Sunki tema, pirkta dėl įspūdingos demonstracinės versijos, dažnai įkelia funkcijas, kurių parduotuvė niekada nenaudoja.
Duomenų bazė
Apie šią dalį pamirštama dažniausiai, o senesnėse parduotuvėse ji neretai būna pagrindinė problema.
- Statistikos lentelės auga be galo. Lentelės, tokios kaip
connections,connections_sourceirguest, saugo kiekvieną apsilankymą. Po kelerių metų jose gali būti milijonai eilučių, o puslapiai, kurie jas naudoja, sulėtėja. Senas eilutes galima saugiai išvalyti, pasidarius atsarginę kopiją. Jei naudojate kitą analitikos įrankį, integruotų statistikos modulių gali visai nereikėti. - Žurnalai ir apleisti krepšeliai taip pat kaupiasi: lentelė
log,carteilutės iš lankytojų, kurie taip ir neužsisakė, senimailįrašai. - Sluoksniniai filtrai (faceted search) turi savo indeksą. Po didelių katalogo pakeitimų perkurkite jį per modulio pateiktą cron nuorodą, kad filtrai liktų greiti ir rodytų teisingus rezultatus.
Nuo ko pradėti
Jei turite tik valandą, ši tvarka duoda daugiausia naudos su mažiausiomis pastangomis:
- Patikrinkite Performance puslapį: jokio perkompiliavimo, talpykla įjungta, derinimo režimas išjungtas.
- Pašalinkite nenaudojamus modulius.
- Su talpinimo paslaugos teikėju patikrinkite PHP versiją ir OPcache.
- Pažiūrėkite, kokio dydžio statistikos ir krepšelių lentelės.
- Tada imkitės paveikslėlių ir skriptų, matuodami puslapį po puslapio.
Reikia pagalbos?
Mūsų greičio patikros ir taisymų paketas apima viską, kas aprašyta aukščiau, už fiksuotą 390 € kainą: išmatuojame, randame, kas lėtina jūsų parduotuvę, tai sutvarkome (įskaičiuota iki 8 valandų darbo) ir parodome rezultatus prieš ir po.