Každý e-shop na PrestaShope si potichu ukladá obrovské množstvo údajov, ktoré už nikto nepotrebuje: opustené košíky, záznamy o každom pripojení návštevníka, logy, kópie odoslaných e-mailov či staré vyhľadávania. Po pár rokoch môžu mať niektoré tabuľky milióny riadkov a databáza je niekoľkonásobne väčšia, než by musela byť. Čistenie databázy PrestaShop pritom v základe nerieši. V tomto článku ukážem, čo sa dá bezpečne zmazať, na čo si dať pozor a ako čistenie zautomatizovať.
Prečo databáza PrestaShopu rastie
PrestaShop zaznamenáva takmer všetko, čo sa v obchode deje. Väčšina týchto údajov má zmysel len pár dní alebo týždňov, no obchod ich sám nikdy nezmaže:
- košíky – vzniká ich oveľa viac než objednávok, každá návšteva s pridaným produktom vytvorí košík,
- pripojenia a návštevníci – štatistiky o každej návšteve vrátane robotov,
- logy – chybové hlásenia a záznamy z administrácie,
- odoslané e-maily – záznam o každom e-maile, ktorý obchod poslal,
- neexistujúce stránky a vyhľadávania – štatistiky chýb 404 a hľadaných výrazov,
- expirované špeciálne ceny – akcie, ktoré dávno skončili.
K tomu sa pridávajú súbory na disku: skompilované šablóny Smarty, dočasné obrázky a vnútorná cache, ktoré sa po rokoch prevádzky a aktualizácií hromadia.
Čo to spôsobuje
Veľká databáza nie je len otázka miesta na hostingu. Prináša aj praktické problémy:
- Pomalšia administrácia – zoznamy košíkov, zákazníkov či štatistiky sa načítavajú čoraz dlhšie.
- Dlhšie a väčšie zálohy – zálohovanie trvá dlhšie a zaberá viac miesta. Obnova po havárii tiež.
- Problémy pri aktualizácii – aktualizácia PrestaShopu alebo modulov upravuje tabuľky. Pri miliónoch riadkov to môže trvať tak dlho, že skript skončí na časovom limite.
- Limity hostingu – na zdieľanom hostingu býva veľkosť databázy obmedzená.
Rýchlosť samotného obchodu pre zákazníka závisí od viacerých vecí, no štíhla databáza je jedným z predpokladov, aby obchod zbytočne nespomaľoval.
Prečo nečistiť ručne v phpMyAdmin
Lákavé je otvoriť phpMyAdmin a tabuľky jednoducho vyprázdniť. Pri PrestaShope je to však riskantné. Tabuľky sú navzájom prepojené a košík, ku ktorému existuje objednávka, sa zmazať nesmie. Ručným mazaním ľahko vznikne nekonzistentná databáza, ktorá sa prejaví až o niekoľko týždňov ako chyba v objednávke alebo štatistike. Navyše hromadný príkaz nad miliónmi riadkov dokáže na zdieľanom hostingu zablokovať databázu aj pre bežiaci obchod.
Preto som pre obchody, ktoré spravujem, vytvoril modul, ktorý čistí bezpečne, po dávkach a s prehľadom.
Modul Čistenie a optimalizácia PrestaShopu
Modul Čistenie a optimalizácia PrestaShopu ukáže, koľko zbytočných záznamov a súborov obchod má, a bezpečne ich zmaže. Funguje v PrestaShope 1.7.6 až 9.x, teda aj v starších obchodoch, kde sa dát nazbieralo najviac, a nemení žiadne súbory PrestaShopu.
Prehľad na jednom mieste
Po otvorení modulu vidíte všetky úlohy rozdelené do skupín Databáza a Súbory a cache. Pri každej úlohe je počet záznamov alebo veľkosť súborov, nastavený vek, interval automatického čistenia a tlačidlo Vyčistiť. Hore je súhrn, koľko záznamov a súborov sa dá spolu vyčistiť, takže hneď viete, či sa čistenie oplatí.
Čo modul čistí
Databáza:
- staré košíky bez objednávky,
- pripojenia a návštevníci,
- logy a odoslané e-maily,
- neexistujúce stránky, vyhľadávania a referrer,
- expirované špeciálne ceny,
- nepoužité hodnoty vlastností a atribútov.
Súbory a cache:
- cache a skompilované šablóny Smarty,
- dočasné obrázky,
- vnútorná cache PrestaShopu.
Bezpečné mazanie
Pri čistení databázy je najdôležitejšie nezmazať nič potrebné. Modul má preto viacero poistiek:
- Košíky s objednávkou sa nikdy nemažú, len tie, z ktorých objednávka nevznikla.
- Vek záznamov nastavíte pri každej úlohe zvlášť, napríklad logy staršie ako 30 dní. Minimum chráni čerstvé údaje.
- Mazanie po dávkach – záznamy sa mažú postupne, aby sa server nezahltil. Čo sa nestihne, vyčistí sa pri ďalšom behu.
- Väzby medzi tabuľkami – najprv sa mažú prepojené tabuľky, potom hlavná, aby nevznikli osirelé záznamy.
- Systémové súbory ostávajú – pri mazaní cache sa ponechajú súbory
index.phpa.htaccess.
Aj tak odporúčam pred prvým čistením urobiť zálohu databázy. Postup nájdete v návode ako zálohovať databázu.
Čistenie jedným klikom alebo automaticky
Každú úlohu môžete spustiť samostatne tlačidlom Vyčistiť. Tlačidlo Vyčistiť všetko zapnuté spustí naraz všetky úlohy, ktoré majú nastavený interval.
Ak nechcete na čistenie myslieť, nastavíte pri každej úlohe interval: denne, týždenne alebo mesačne. Modul pripraví tri adresy pre cron, ktoré pridáte na hostingu. Adresy sú chránené tajným kľúčom, ktorý môžete kedykoľvek vymeniť tlačidlom Nové adresy. Ak cron nastavovať neviete, pomôže návod na nastavenie cronu.
História čistení
Modul si pamätá posledných 50 čistení: kedy prebehlo, čo sa čistilo, koľko záznamov sa zmazalo a či išlo o ručné čistenie alebo cron. Časy sa zobrazujú v časovej zóne vášho prehliadača. Hneď tak vidíte, či automatické čistenie funguje a koľko dát sa v obchode za týždeň nazbiera.
Ako často čistiť
Univerzálne pravidlo neexistuje, no pre bežný obchod sa osvedčilo:
- denne – pripojenia a návštevníci, ktorých pribúda najviac,
- týždenne – staré košíky, vyhľadávania a neexistujúce stránky,
- mesačne – logy, e-maily, expirované ceny a cache.
Pri košíkoch nechajte rozumný vek, napríklad niekoľko týždňov. Ak používate pripomienky opustených košíkov, košík musí vydržať aspoň dovtedy, kým pripomienka odíde. Viac o tom píšem v článku o opustených košíkoch v PrestaShope.
Nastavenie krok za krokom
- Urobte zálohu databázy.
- Nahrajte modul cez Moduly › Správca modulov › Nahrať modul a nainštalujte ho.
- Pozrite si prehľad: koľko záznamov a súborov sa dá vyčistiť.
- Pri úlohách s vekom nastavte, koľko dní majú záznamy ostať, a vyberte interval automatického čistenia.
- Spustite prvé čistenie ručne po jednotlivých úlohách, prípadne tlačidlom Vyčistiť všetko zapnuté.
- Pridajte adresy pre cron na hostingu a o pár dní skontrolujte históriu čistení.
Časté otázky
Zmaže modul objednávky alebo zákazníkov? Nie. Čistí len pomocné a štatistické údaje. Košíky, z ktorých vznikla objednávka, sa nemažú.
Prídem o štatistiky návštev? Staršie záznamy o pripojeniach sa zmažú podľa veku, ktorý nastavíte. Ak štatistiky v PrestaShope používate, nastavte dlhší vek. Väčšina obchodov dnes používa na štatistiky Google Analytics.
Zaťaží čistenie server? Nie. Mazanie prebieha po dávkach a pri veľkom množstve dát sa rozloží do viacerých behov.
Môžem vypnúť automatické čistenie? Áno. Cron sa dá vypnúť jedným políčkom a ručné čistenie funguje ďalej.
Cena a ako začať
Modul stojí 25 € za časovo neobmedzenú licenciu pre jednu doménu s 12 mesiacmi aktualizácií a podpory. Vyžaduje PrestaShop 1.7.6 až 9.x a PHP 7.1 alebo novší. Postup inštalácie a nastavenia nájdete v dokumentácii modulu, kúpiť ho môžete na stránke produktu: modul Čistenie a optimalizácia PrestaShopu.
Ak potrebujete obchod zrýchliť komplexne, pozrite aj moju službu optimalizácia a zrýchlenie PrestaShopu.






