Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

Hitrost in predpomnjenje v spletni trgovini

Modul 6: Upravljanje in varnost · Čas branja: 10 minut

Učni cilj: Po tej lekciji boste znali predpomnjenje za spletno trgovino WooCommerce nastaviti tako, da je trgovina hitra in da osebne strani nikoli ne pridejo v predpomnilnik, to pa boste znali preveriti tudi v glavah HTTP.

Ključni pojmi: predpomnilnik strani, izjeme (košarica, blagajna, Moj račun), piškotki, ki obidejo predpomnilnik, glave no-cache, DONOTCACHEPAGE, predpomnilnik objektov, Redis, fragmenti košarice, geolociranje s predpomnilnikom strani, čiščenje načrtovanih dejanj

Dve vrsti strani

Osnove predpomnjenja (predpomnilnik strani, predpomnilnik brskalnika, predpomnilnik objektov, OPcache, CDN) so opisane v tečaju o WordPressu, lekcija 6.2. Tam je navedeno tudi najpomembnejše pravilo za spletne trgovine: osebne strani ne smejo v predpomnilnik strani. Ta lekcija to pravilo podrobneje razloži.

Spletna trgovina ima dve vrsti strani:

VrstaPrimeriPredpomnilnik
Enake za vsedomača stran, stran trgovine, kategorije, strani izdelkov, informativne straniPredpomnilnik strani: da, tukaj je največji prihranek
Za vsakega obiskovalca drugačnekošarica, blagajna, Moj račun, stran za odstop od pogodbe s prijavljeno strankoPredpomnilnik strani: nikoli

Če gre kaj narobe, to takoj opazite: stranka vidi košarico nekoga drugega ali, še huje, naslov druge osebe na strani blagajne. To je tudi kršitev varnosti osebnih podatkov v smislu GDPR (KB 6749).

Kaj WooCommerce naredi sam

WooCommerce predpomnilniku pomaga na tri načine. Dobro jih je poznati, da opazite, kdaj jih kaj odstrani:

  1. Konstante. Na straneh košarice, blagajne in Moj račun WooCommerce nastavi DONOTCACHEPAGE (in podobne konstante za predpomnilnik objektov in podatkovne baze). Številni vtičniki za predpomnjenje to konstanto preberejo in stran nato preskočijo.
  2. Glave HTTP. Na istih straneh WooCommerce pošlje glave no-cache iz WordPressa: Cache-Control: no-cache, must-revalidate, max-age=0, private in Expires z datumom v preteklosti. Posredniški strežnik ali CDN, ki upošteva pravila, strani potem ne shrani. Za prijavljene uporabnike se doda še no-store.
  3. Piškotki. Ko nekdo doda izdelek v košarico, WooCommerce nastavi piškotke, kot so woocommerce_items_in_cart, woocommerce_cart_hash in wp_woocommerce_session_.... Dobri predpomnilniki obiskovalcem s takim piškotkom ne prikazujejo več shranjenih strani, tudi ne strani izdelkov, ker je na primer košarica v glavi strani takrat za vsakega obiskovalca drugačna.

Dokumentacija WooCommerce za vtičnike za predpomnjenje navaja: izključite košarico, Moj račun in blagajno ter piškotke woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed in store_notice[...]. Za Varnish navaja tudi pravila za naslove z ?add-to-cart=.

Kje se v praksi zalomi

  • Drugi naslovi za strani trgovine. Košarico ste preimenovali v /mandje/ ali pa vtičnik za prevajanje ustvari /de/warenkorb/. Predpomnilnik, ki izključuje stalne naslove, kot je /cart, teh ne zajame. Vtičniki za predpomnjenje, ki poznajo WooCommerce, strani preberejo iz nastavitev; predpomnilnik na strežniku ali pri CDN-ju tega ne naredi.
  • CDN, ki predpomni vse. Nekatera pravila CDN (»cache everything«) prezrejo glave HTTP. V tem primeru strani trgovine in navedene piškotke izrecno izključite.
  • Vtičnik, ki prepiše glave HTTP. Varnostni vtičnik ali vtičnik za pohitritev včasih na vsako stran postavi Cache-Control: public, max-age=.... Takrat glav no-cache ni več.
  • Seja za vsakega obiskovalca. Običajno WooCommerce nastavi piškotek seje šele, ko je v košarici izdelek. Če vtičnik ali tema že vsakemu obiskovalcu ustvari sejo (piškotek wp_woocommerce_session_ ali PHPSESSID ob prvem obisku), predpomnilnik strani odpove za vse in Vaša trgovina je ob velikem obisku počasna.
  • Geolociranje. V WooCommerce > Nastavitve > Splošno izberete privzeto lokacijo stranke. Pri navadnem »Geolociranje« strežnik državo izračuna za vsakega obiskovalca posebej, kar se pri cenah po državah ne ujema s predpomnilnikom strani. Zato ima WooCommerce možnost »Geolociranje (s podporo za predpomnjenje strani)«, ki državo določi z dodatno zahtevo v brskalniku. Če cen ali DDV po državah pred zaključkom nakupa ne potrebujete, izberite državo trgovine: to je najpreprosteje. Za geolociranje WooCommerce redno prenaša podatkovno bazo podjetja MaxMind.

Na strežniku LiteSpeed (kot pri WebOké) izjeme za WooCommerce samodejno ureja vtičnik LiteSpeed Cache; preverite jih v nastavitvah za izključitve. Pri drugih spletnih strežnikih in ponudnikih gostovanja deluje podobno z drugim vtičnikom za predpomnjenje.

Česa predpomnilnik strani ne reši

Košarico in blagajno vedno sestavita PHP in podatkovna baza. Ob velikem obisku (akcija, e-novice) so to ravno strani, na katerih Vaše stranke zapravljajo denar. Tam pomagajo druge stvari:

  • Predpomnilnik objektov, kot je Redis, shranjuje rezultate poizvedb v podatkovno bazo v pomnilniku. Pri spletni trgovini, ki ima veliko strani, ki ne smejo v predpomnilnik strani, to prinese opazno več kot pri navadnem spletnem mestu. Vaše gostovanje mora ponujati Redis (pri WebOké je to mogoče, DA 15.7); nato ga vklopite z vtičnikom.
  • Fragmenti košarice. Klasične teme košarico v glavi strani posodabljajo s skriptom (wc-cart-fragments), ki pri polni košarici pošlje dodatno zahtevo. Sodobne blokovne teme z blokom mini košarice tega potrebujejo manj. Takih skriptov ne nalagajte na strani, kjer nimajo nobene vloge.
  • Očiščena načrtovana dejanja. WooCommerce za opravila v ozadju uporablja Action Scheduler (lekcija 7.3). Zaključena dejanja se privzeto počistijo po enem mesecu. Če seznam kljub temu naraste na več sto tisoč vnosov, pogosto zaradi razširitve, ki nenehno nekaj načrtuje, ali zaradi neuspelih dejanj, postanejo poizvedbe v podatkovno bazo počasnejše. V WooCommerce > Stanje > Načrtovana dejanja preverite število neuspelih dejanj in dejanj v čakanju.
  • HPOS. Naročila v lastnih tabelah (lekcija 1.2) omogočajo hitrejše iskanje po naročilih kot v stari tabeli prispevkov. Obstoječe trgovine morajo preklopiti same (lekcija 6.2 o varnostnih kopijah pred tem).
  • Aktualna različica PHP in dovolj pomnilnika (lekcija 7.2).

V praksi: tako je videti v WooCommerce

Pri Theehuis Example to preverite v zasebnem oknu z orodji za razvijalce v brskalniku (F12, zavihek Omrežje, prva zahteva):

  1. Domačo stran naložite dvakrat: ob drugem nalaganju se pokaže glava, kot je x-litespeed-cache: hit ali cf-cache-status: HIT. Ob prvem obisku ni piškotka wp_woocommerce_session_.
  2. shop.example.com/winkelwagen/ naložite dvakrat: ni zadetka, cache-control pa vsebuje no-cache ali private.
  3. Enako naredite za blagajno in Moj račun.
  4. Dodajte izdelek v košarico in naložite stran izdelka: videti morate svojo košarico, ne shranjene različice.

Povzetek

  • Strani, ki so enake za vse, gredo v predpomnilnik; košarica, blagajna in Moj račun nikoli.
  • WooCommerce sam nastavi DONOTCACHEPAGE, glave no-cache in piškotke; preverite, da jih nič ne odstrani ali prezre.
  • Bodite pozorni na preimenovane naslove, pravila CDN, vtičnike, ki prepisujejo glave HTTP, seje za vsakega obiskovalca in geolociranje.
  • Redis, očiščena načrtovana dejanja, HPOS in dobra različica PHP pomagajo tam, kjer predpomnilnik strani ne more.
  • Preizkusite z dvakratnim nalaganjem v zasebnem oknu in preberite glave HTTP.

Kviz

1. Stranka v svoji košarici vidi izdelke, ki jih ni izbrala. Kaj je najverjetnejši vzrok?



2. Katero glavo HTTP pričakujete na strani blagajne v trgovini WooCommerce?



3. Vaša trgovina ne prikazuje cen po državah, privzeta lokacija pa je nastavljena na »Geolociranje«. Katera je preprosta izboljšava za predpomnilnik?



4. Zakaj Redis pri spletni trgovini pomaga bolj kot pri navadnem informativnem spletnem mestu?



Naloga

Naloga A6.4: Ali košarica in blagajna ostaneta zunaj predpomnilnika? Vnesite naslov svoje trgovine ter naslova strani košarice in blagajne (po želji tudi Moj račun). Program dvakrat zahteva domačo stran z 2 sekundama razmika, brez piškotkov, nato pa tudi vsako stran trgovine dvakrat. V košarico se ne doda nič in nič se ne naroči. Zeleno, če domača stran ob drugi zahtevi pride iz predpomnilnika (ali je opazno hitrejša) in ne nastavi piškotka seje ter če vsaka stran trgovine ob drugi zahtevi nima zadetka v predpomnilniku in pošlje Cache-Control z no-cache, no-store, private ali max-age=0. Oranžno, če domača stran ne uporablja predpomnilnika ali če stran trgovine nima zadetka, a tudi nima glave no-cache. Rdeče pri zadetku v predpomnilniku na košarici, blagajni ali Moj račun ali če domača stran pri vsakem obiskovalcu začne sejo WooCommerce.

Zelena kljukica pomeni, da je ta kontrola trenutno v redu, ne pa, da je Vaša trgovina varna.

Naloga A6.4: Ali košarica in blagajna ostaneta zunaj predpomnilnika?





Tega, kar vnesete, in tega, kar najdemo, ne shranjujemo. Vaš brskalnik si zapomni Vaše odgovore in to, ali ste nalogo opravili. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo (skoraj) pravilno opravili; tudi to lahko tam izbrišete.

Za nadaljnje branje

Koraki v nadzorni plošči veljajo za WebOké; pri drugih ponudnikih deluje podobno.

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…