Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

Rýchlosť a cache v e-shope

Modul 6: Správa a bezpečnosť · Čas čítania: 10 min.

Cieľ lekcie: Po tejto lekcii dokážete nastaviť cache pre e-shop WooCommerce tak, aby bol obchod rýchly a osobné stránky sa nikdy nedostali do cache, a dokážete to overiť podľa hlavičiek HTTP.

Kľúčové pojmy: medzipamäť stránok (page cache), výnimky (košík, pokladňa, Môj účet), cookies, ktoré obchádzajú cache, hlavičky no-cache, DONOTCACHEPAGE, objektová cache, Redis, fragmenty košíka, geolokácia s medzipamäťou stránok, čistenie plánovaných akcií

Dva druhy stránok

Základy cache (medzipamäť stránok, cache prehliadača, objektová cache, OPcache, CDN) nájdete v kurze o WordPresse, v lekcii 6.2. Tam je uvedené aj najdôležitejšie pravidlo pre e-shopy: osobné stránky nesmú byť v medzipamäti stránok. Táto lekcia ho rozvádza podrobnejšie.

E-shop má dva druhy stránok:

DruhPríkladyCache
Rovnaké pre všetkýchdomovská stránka, stránka obchodu, kategórie, stránky produktov, informačné stránkyMedzipamäť stránok: áno, tu je najväčší prínos
Pre každého návštevníka inékošík, pokladňa, Môj účet, stránka na odstúpenie od zmluvy s prihláseným zákazníkomMedzipamäť stránok: nikdy

Ak sa niečo pokazí, prejaví sa to okamžite: zákazník uvidí košík niekoho iného, alebo ešte horšie, cudziu adresu na stránke pokladne. To je zároveň porušenie ochrany osobných údajov v zmysle GDPR (KB 6749).

Čo robí WooCommerce samo

WooCommerce pomáha cache tromi spôsobmi. Oplatí sa ich poznať, aby ste si všimli, keď ich niečo odstráni:

  1. Konštanty. Na stránkach košíka, pokladne a Môj účet nastaví WooCommerce konštantu DONOTCACHEPAGE (a podobné aj pre objektovú a databázovú cache). Mnohé pluginy na cache túto konštantu čítajú a takú stránku vynechajú.
  2. Hlavičky. Na tých istých stránkach posiela WooCommerce hlavičky no-cache z WordPressu: Cache-Control: no-cache, must-revalidate, max-age=0, private a hlavičku Expires s dátumom v minulosti. Proxy alebo CDN, ktoré dodržiavajú pravidlá, potom stránku neuložia. Pre prihlásených používateľov pribudne no-store.
  3. Cookies. Hneď ako niekto vloží niečo do košíka, WooCommerce nastaví cookies ako woocommerce_items_in_cart, woocommerce_cart_hash a wp_woocommerce_session_.... Dobré cache už návštevníkom s takou cookie nedávajú uloženú stránku, ani pri stránkach produktov, pretože napríklad košík v hlavičke stránky je potom pre každého návštevníka iný.

Dokumentácia WooCommerce pre pluginy na cache odporúča: vylúčte košík, Môj účet a pokladňu a cookies woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed a store_notice[...]. Pre Varnish uvádza aj pravidlá pre adresy s ?add-to-cart=.

Kde to v praxi zlyháva

  • Iné adresy stránok obchodu. Košík ste premenovali na /moj-kosik/ alebo prekladový plugin vytvorí /de/warenkorb/. Cache, ktorá vylučuje pevné adresy ako /cart, ich prehliadne. Pluginy na cache, ktoré poznajú WooCommerce, načítajú stránky z nastavení; cache na serveri alebo v CDN to nerobí.
  • CDN, ktoré ukladá všetko. Niektoré pravidlá CDN („cache everything“) ignorujú hlavičky. Vtedy stránky obchodu a uvedené cookies výslovne vylúčte.
  • Plugin, ktorý prepisuje hlavičky. Bezpečnostný alebo výkonnostný plugin niekedy nastaví na každej stránke Cache-Control: public, max-age=.... Hlavičky no-cache potom zmiznú.
  • Relácia pre každého návštevníka. Bežne WooCommerce nastaví cookie relácie až vtedy, keď je v košíku nejaký tovar. Ak plugin alebo téma založí reláciu už každému návštevníkovi (cookie wp_woocommerce_session_ alebo PHPSESSID pri prvej návšteve), medzipamäť stránok prestane fungovať pre všetkých a váš e-shop bude pri vyššej návštevnosti pomalý.
  • Geolokácia. V WooCommerce > Nastavenia > Všeobecné vyberáte predvolenú polohu zákazníka. Pri obyčajnej možnosti „Geolokácia“ server zisťuje krajinu pre každého návštevníka a pri cenách podľa krajiny sa to s medzipamäťou stránok nezlučuje. WooCommerce preto ponúka možnosť „Geolokácia (s podporou medzipamäte stránok)“, ktorá krajinu zisťuje dodatočnou požiadavkou v prehliadači. Ak pred pokladňou nepotrebujete ceny ani DPH podľa krajiny, zvoľte krajinu obchodu: je to najjednoduchšie. Na geolokáciu WooCommerce pravidelne sťahuje databázu od spoločnosti MaxMind.

Na serveri LiteSpeed (ako vo WebOké) rieši výnimky pre WooCommerce sám plugin LiteSpeed Cache; skontrolujte ich v nastaveniach výnimiek. Pri iných webových serveroch a poskytovateľoch hostingu to s iným pluginom na cache funguje podobne.

Čo medzipamäť stránok nevyrieši

Košík a pokladňu vždy zostavuje PHP a databáza. Pri vyššej návštevnosti (akcia, newsletter) sú to práve stránky, na ktorých vaši zákazníci míňajú peniaze. Tam pomáhajú iné veci:

  • Objektová cache, napríklad Redis, ukladá výsledky databázových dopytov do pamäte. V e-shope, ktorý má veľa stránok, čo nemôžu byť v medzipamäti stránok, to prinesie citeľne viac než na bežnej stránke. Váš hosting musí Redis ponúkať (vo WebOké je to možné, DA 15.7); potom ho zapnete pomocou pluginu.
  • Fragmenty košíka. Klasické témy aktualizujú košík v hlavičke stránky skriptom (wc-cart-fragments), ktorý pri naplnenom košíku posiela dodatočnú požiadavku. Moderné blokové témy s blokom mini košíka to potrebujú menej. Nenačítavajte takéto skripty na stránkach, kde nemajú čo robiť.
  • Vyčistené plánované akcie. WooCommerce používa Action Scheduler na úlohy na pozadí (lekcia 7.3). Dokončené akcie sa predvolene vymažú po mesiaci. Ak zoznam aj tak narastie na státisíce, často kvôli rozšíreniu, ktoré stále niečo plánuje, alebo kvôli neúspešným akciám, databázové dopyty sa spomalia. V WooCommerce > Stav > Plánované akcie sledujte počet neúspešných a čakajúcich akcií.
  • HPOS. Objednávky vo vlastných tabuľkách (lekcia 1.2) zrýchľujú vyhľadávanie v objednávkach oproti starej tabuľke príspevkov. Existujúce obchody musia prejsť samy (lekcia 6.2 o zálohách vopred).
  • Aktuálna verzia PHP a dostatok pamäte (lekcia 7.2).

V praxi: takto to vyzerá vo WooCommerce

Skontrolujte to pri Theehuis Example v súkromnom okne s nástrojmi pre vývojárov vo vašom prehliadači (F12, karta Sieť, prvá požiadavka):

  1. Domovská stránka, načítať dvakrát: pri druhom načítaní hlavička ako x-litespeed-cache: hit alebo cf-cache-status: HIT. Žiadna cookie wp_woocommerce_session_ pri prvej návšteve.
  2. shop.example.com/kosik/, načítať dvakrát: žiadny zásah (hit) a cache-control s no-cache alebo private.
  3. To isté pre pokladňu a Môj účet.
  4. Vložte produkt do košíka a načítajte stránku produktu: uvidíte svoj vlastný košík, nie uloženú verziu.

Zhrnutie

  • Stránky, ktoré sú rovnaké pre všetkých, patria do cache; košík, pokladňa a Môj účet nikdy.
  • WooCommerce samo nastavuje DONOTCACHEPAGE, hlavičky no-cache a cookies; overte, že ich nič neodstraňuje ani neignoruje.
  • Dávajte pozor na premenované adresy, pravidlá CDN, pluginy prepisujúce hlavičky, relácie pre každého návštevníka a geolokáciu.
  • Redis, vyčistené plánované akcie, HPOS a vhodná verzia PHP pomáhajú tam, kde medzipamäť stránok nemôže.
  • Testujte dvojitým načítaním v súkromnom okne a čítajte hlavičky.

Kvíz

1. Zákazník vidí vo svojom košíku produkty, ktoré si nevybral. Čo je najpravdepodobnejšia príčina?



2. Akú hlavičku očakávate na stránke pokladne e-shopu WooCommerce?



3. Váš e-shop nezobrazuje ceny podľa krajiny, ale predvolená poloha je nastavená na „Geolokácia“. Aké je jednoduché zlepšenie pre cache?



4. Prečo Redis pomáha v e-shope viac než na bežnej informačnej stránke?



Úloha

Úloha A6.4: Zostávajú košík a pokladňa mimo cache? Zadajte adresu svojho e-shopu a adresy stránky košíka a pokladne (prípadne aj Môj účet). Program načíta domovskú stránku dvakrát s odstupom 2 sekúnd, bez cookies, a potom každú stránku obchodu tiež dvakrát. Nič sa nevkladá do košíka a nič sa neobjednáva. Zelená, ak domovská stránka pri druhom načítaní pochádza z cache (alebo je zreteľne rýchlejšia) a nenastaví cookie relácie, a ak každá stránka obchodu pri druhom načítaní nemá zásah z cache a posiela Cache-Control s no-cache, no-store, private alebo max-age=0. Oranžová, ak domovská stránka nepoužíva cache, alebo ak stránka obchodu nemá zásah, ale ani hlavičku no-cache. Červená pri zásahu z cache na košíku, pokladni alebo Môj účet, alebo ak domovská stránka spúšťa reláciu WooCommerce každému návštevníkovi.

Zelená fajka znamená, že táto kontrola je teraz v poriadku, nie že je váš e-shop bezpečný.

Úloha A6.4: Zostávajú košík a pokladňa mimo cache?





Čo vyplníte a čo nájdeme, neukladáme. Váš prehliadač si pamätá vaše odpovede a to, či ste úlohu splnili. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že úloha bola (takmer) správne vyriešená; aj to tam môžete odstrániť.

Ďalšie čítanie

Postupy v paneli platia pre WebOké; u iných poskytovateľov to funguje podobne.

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…