Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

Rychlost a mezipaměť v e-shopu

Modul 6: Správa a zabezpečení · Doba čtení: 10 minut

Cíl lekce: Po této lekci dokážete nastavit mezipaměť pro e-shop s WooCommerce tak, aby byl obchod rychlý a osobní stránky se nikdy do mezipaměti nedostaly, a umíte to ověřit podle hlaviček HTTP.

Klíčové pojmy: mezipaměť stránky, výjimky (košík, pokladna, Můj účet), cookies, které obcházejí mezipaměť, hlavičky no-cache, DONOTCACHEPAGE, objektová mezipaměť, Redis, fragmenty košíku, geolokace s mezipamětí stránky, čištění naplánovaných akcí

Dva druhy stránek

Základy ukládání do mezipaměti (mezipaměť stránky, mezipaměť prohlížeče, objektová mezipaměť, OPcache, CDN) najdete v kurzu o WordPressu, lekce 6.2. Tam je také nejdůležitější pravidlo pro e-shopy: osobní stránky nesmějí být v mezipaměti stránky. Tato lekce ho rozvádí podrobněji.

E-shop má dva druhy stránek:

DruhPříkladyMezipaměť
Pro všechny stejnédomovská stránka, stránka obchodu, kategorie, stránky produktů, informační stránkyMezipaměť stránky: ano, zde je největší přínos
Pro každého návštěvníka jinékošík, pokladna, Můj účet, stránka pro odstoupení od smlouvy s přihlášeným zákazníkemMezipaměť stránky: nikdy

Když se to pokazí, poznáte to hned: zákazník vidí košík někoho jiného, nebo hůř, cizí adresu na stránce pokladny. To je zároveň únik osobních údajů ve smyslu GDPR (KB 6749).

Co WooCommerce dělá samo

WooCommerce pomáhá mezipaměti třemi způsoby. Je dobré je znát, abyste poznali, když je něco odstraní:

  1. Konstanty. Na stránkách košíku, pokladny a Můj účet nastavuje WooCommerce DONOTCACHEPAGE (a také konstanty pro objektovou a databázovou mezipaměť). Mnoho pluginů pro mezipaměť tuto konstantu čte a stránku pak vynechá.
  2. Hlavičky. Na týchž stránkách posílá WooCommerce hlavičky no-cache z WordPressu: Cache-Control: no-cache, must-revalidate, max-age=0, private a Expires s datem v minulosti. Proxy nebo CDN, které pravidla dodržují, pak stránku neuloží. U přihlášených uživatelů přibude no-store.
  3. Cookies. Jakmile někdo vloží něco do košíku, nastaví WooCommerce cookies jako woocommerce_items_in_cart, woocommerce_cart_hash a wp_woocommerce_session_.... Dobré mezipaměti návštěvníkům s takovou cookie už nepředávají uloženou stránku, ani u stránek produktů, protože například košík v záhlaví je pak pro každého návštěvníka jiný.

Dokumentace WooCommerce pro pluginy mezipaměti uvádí: vylučte košík, Můj účet a pokladnu a cookies woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed a store_notice[...]. Pro Varnish uvádí také pravidla pro adresy s ?add-to-cart=.

Kde to v praxi selhává

  • Jiné adresy stránek obchodu. Košík jste přejmenovali na /mandje/ nebo překladový plugin vytváří /de/warenkorb/. Mezipaměť, která vylučuje pevné adresy jako /cart, tyto stránky mine. Pluginy pro mezipaměť, které WooCommerce znají, čtou stránky z nastavení; mezipaměť na serveru nebo v CDN to nedělá.
  • CDN, které ukládá vše. Některá pravidla CDN („cache everything“) hlavičky ignorují. Pak stránky obchodu a uvedené cookies výslovně vylučte.
  • Plugin, který přepisuje hlavičky. Bezpečnostní nebo zrychlovací plugin někdy na každé stránce nastaví Cache-Control: public, max-age=.... Hlavičky no-cache pak už ve odpovědi nejsou.
  • Relace pro každého návštěvníka. Běžně WooCommerce nastaví cookie relace až tehdy, když je v košíku zboží. Pokud plugin nebo šablona zakládá relaci každému návštěvníkovi (cookie wp_woocommerce_session_ nebo PHPSESSID už při první návštěvě), mezipaměť stránky přestane fungovat pro všechny a Váš e-shop bude ve špičce pomalý.
  • Geolokace. V WooCommerce > Nastavení > Obecné volíte výchozí polohu zákazníka. Při obyčejné „Geolokace“ server zjišťuje zemi pro každého návštěvníka zvlášť, a pokud máte ceny podle země, nehodí se to k mezipaměti stránky. WooCommerce proto nabízí volbu „Geolokace (s podporou mezipaměti stránek)“, která zemi určuje dodatečným požadavkem v prohlížeči. Pokud před pokladnou nepotřebujete ceny ani DPH podle země, zvolte zemi obchodu: to je nejjednodušší. Pro geolokaci WooCommerce pravidelně stahuje databázi od MaxMind.

Na serveru LiteSpeed (jako u WebOké) řeší výjimky pro WooCommerce sám plugin LiteSpeed Cache; zkontrolujte je v nastavení výjimek. U jiných webových serverů a poskytovatelů hostingu to s jiným pluginem pro mezipaměť funguje podobně.

Co mezipaměť stránky nevyřeší

Košík a pokladnu vždy sestavuje PHP a databáze. Ve špičce (akce, newsletter) jsou to právě stránky, kde Vaši zákazníci utrácejí peníze. Tam pomáhají jiné věci:

  • Objektová mezipaměť jako Redis uchovává výsledky databázových dotazů v paměti. V e-shopu, kde je mnoho stránek, které do mezipaměti stránky nemohou, přináší znatelně víc než na běžném webu. Váš hosting musí Redis nabízet (u WebOké to jde, DA 15.7); poté ho zapnete pluginem.
  • Fragmenty košíku. Klasické šablony aktualizují košík v záhlaví skriptem (wc-cart-fragments), který při naplněném košíku posílá dodatečný požadavek. Moderní blokové šablony s blokem mini košíku to potřebují méně. Nenačítejte takové skripty na stránkách, kde nic nedělají.
  • Vyčištěné naplánované akce. WooCommerce používá Action Scheduler pro úlohy na pozadí (lekce 7.3). Dokončené akce se standardně mažou po měsíci. Pokud seznam přesto naroste na stovky tisíc, často kvůli rozšíření, které stále něco plánuje, nebo kvůli neúspěšným akcím, databázové dotazy se zpomalí. V WooCommerce > Stav > Naplánované akce sledujte počet neúspěšných a čekajících akcí.
  • HPOS. Objednávky ve vlastních tabulkách (lekce 1.2) zrychlují vyhledávání v objednávkách oproti staré tabulce příspěvků. Stávající obchody musí přejít samy (lekce 6.2 o zálohách předem).
  • Aktuální verze PHP a dostatek paměti (lekce 7.2).

V praxi: jak to vypadá ve WooCommerce

Ověřte to u Theehuis Example v anonymním okně s vývojářskými nástroji prohlížeče (F12, karta Síť, první požadavek):

  1. Domovská stránka, načíst dvakrát: při druhém načtení hlavička jako x-litespeed-cache: hit nebo cf-cache-status: HIT. Žádná cookie wp_woocommerce_session_ při první návštěvě.
  2. shop.example.com/winkelwagen/, načíst dvakrát: žádný hit a cache-control s no-cache nebo private.
  3. Totéž pro pokladnu a Můj účet.
  4. Vložte produkt do košíku a načtěte stránku produktu: vidíte svůj vlastní košík, ne uloženou verzi.

Shrnutí

  • Stránky, které jsou pro všechny stejné, do mezipaměti; košík, pokladnu a Můj účet nikdy.
  • WooCommerce samo nastavuje DONOTCACHEPAGE, hlavičky no-cache a cookies; ověřte, že je nic neodstraňuje ani neignoruje.
  • Pozor na přejmenované adresy, pravidla CDN, pluginy přepisující hlavičky, relace pro každého návštěvníka a geolokaci.
  • Redis, vyčištěné naplánované akce, HPOS a vhodná verze PHP pomáhají tam, kam mezipaměť stránky nedosáhne.
  • Testujte dvojím načtením v anonymním okně a čtěte hlavičky.

Kvíz

1. Zákazník vidí ve svém košíku produkty, které si nevybral. Jaká je nejpravděpodobnější příčina?



2. Jakou hlavičku očekáváte na stránce pokladny e-shopu s WooCommerce?



3. Váš e-shop nezobrazuje ceny podle země, ale výchozí poloha je nastavena na „Geolokace“. Jaké je jednoduché zlepšení pro mezipaměť?



4. Proč Redis pomáhá v e-shopu víc než na běžném informačním webu?



Úkol

Úkol A6.4: Zůstávají košík a pokladna mimo mezipaměť? Zadejte adresu svého e-shopu a adresy stránky košíku a pokladny (případně Můj účet). Program načte domovskou stránku dvakrát s odstupem 2 sekund, bez cookies, a poté každou stránku obchodu také dvakrát. Do košíku se nic nevkládá a nic se neobjednává. Zelená, pokud domovská stránka při druhém načtení pochází z mezipaměti (nebo je zřetelně rychlejší) a nenastaví cookie relace, a pokud každá stránka obchodu při druhém načtení nemá zásah mezipaměti a posílá Cache-Control s no-cache, no-store, private nebo max-age=0. Oranžová, pokud domovská stránka mezipaměť nepoužívá, nebo pokud stránka obchodu nemá zásah, ale ani hlavičku no-cache. Červená při zásahu mezipaměti na košíku, pokladně nebo Můj účet, nebo pokud domovská stránka zakládá relaci WooCommerce každému návštěvníkovi.

Zelené zaškrtnutí znamená, že tato kontrola nyní sedí, ne že je Váš e-shop bezpečný.

Úkol A6.4: Zůstávají košík a pokladna mimo mezipaměť?





Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Další čtení

Postupy v panelu platí pro WebOké; u jiných poskytovatelů to funguje podobně.

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…