6. modulis · 6.4
Ātrums un kešošana interneta veikalā
6. modulis: Pārvaldība un drošība · Lasīšanas laiks: 10 min.
Mērķis: Pēc šīs nodarbības Jūs varēsiet iestatīt kešošanu WooCommerce veikalam tā, lai veikals būtu ātrs un personiskās lapas nekad nenonāktu kešatmiņā, un varēsiet to pārbaudīt pēc galvenēm.
Pamatjēdzieni: lapas kešatmiņa, izņēmumi (grozs, apmaksa, Mans konts), sīkdatnes, kas apiet kešatmiņu, no-cache galvenes, DONOTCACHEPAGE, objektu kešatmiņa, Redis, groza fragmenti, ģeolokācija ar lapas kešatmiņu, plānoto darbību tīrīšana
Divu veidu lapas
Kešošanas pamati (lapas kešatmiņa, pārlūka kešatmiņa, objektu kešatmiņa, OPcache, CDN) ir aprakstīti WordPress kursa nodarbībā 6.2. Tur jau ir minēts arī svarīgākais noteikums veikaliem: personiskās lapas nedrīkst nonākt lapas kešatmiņā. Šajā nodarbībā tas ir izklāstīts sīkāk.
Veikalā ir divu veidu lapas:
| Veids | Piemēri | Kešatmiņa |
|---|---|---|
| Visiem vienādas | sākumlapa, veikala lapa, kategorijas, produktu lapas, informatīvās lapas | Lapas kešatmiņa: jā, šeit ir lielākais ieguvums |
| Katram apmeklētājam atšķirīgas | grozs, apmaksa, Mans konts, atteikuma lapa ar pieslēgušos klientu | Lapas kešatmiņa: nekad |
Ja kaut kas noiet greizi, Jūs to redzat uzreiz: klients redz cita cilvēka grozu vai, vēl ļaunāk, kāda adresi apmaksas lapā. Tas ir arī datu noplūdes gadījums VDAR (GDPR) izpratnē (KB 6749).
Ko WooCommerce jau dara pats
WooCommerce palīdz kešatmiņai trīs veidos, un ir vērts tos zināt, lai Jūs pamanītu, kad kaut kas tos noņem:
- Konstantes. Groza, apmaksas un Mans konts lapās WooCommerce iestata
DONOTCACHEPAGE(kā arī objektu un datubāzes kešatmiņai). Daudzi kešošanas spraudņi nolasa šo konstanti un tad lapu izlaiž. - Galvenes. Šajās pašās lapās WooCommerce nosūta WordPress no-cache galvenes:
Cache-Control: no-cache, must-revalidate, max-age=0, privateunExpiresar datumu pagātnē. Starpniekserveris vai CDN, kas ievēro noteikumus, tad lapu nesaglabā. Pieslēgušamies lietotājiem papildus tiek pievienotsno-store. - Sīkdatnes. Tiklīdz kāds ievieto kaut ko grozā, WooCommerce iestata sīkdatnes, piemēram,
woocommerce_items_in_cart,woocommerce_cart_hashunwp_woocommerce_session_.... Labas kešatmiņas apmeklētājiem ar šādu sīkdatni vairs nerāda saglabātu lapu, arī ne produktu lapas, jo, piemēram, grozs galvenē tad katram apmeklētājam ir atšķirīgs.
WooCommerce dokumentācijā kešošanas spraudņiem ieteikts: izslēgt grozu, Mans konts un apmaksu, kā arī sīkdatnes woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed un store_notice[...]. Varnish gadījumā tajā ir doti arī noteikumi adresēm ar ?add-to-cart=.
Kur praksē rodas kļūdas
- Citas adreses veikala lapām. Jūs esat pārdēvējuši grozu par
/mandje/vai tulkošanas spraudnis izveido/de/warenkorb/. Kešatmiņa, kas izslēdz fiksētas adreses, piemēram,/cart, tās nepamana. Kešošanas spraudņi, kas pazīst WooCommerce, nolasa lapas no iestatījumiem; kešatmiņa serverī vai CDN to nedara. - CDN, kas kešo visu. Daži CDN noteikumi ("cache everything") ignorē galvenes. Tādā gadījumā skaidri izslēdziet veikala lapas un minētās sīkdatnes.
- Spraudnis, kas pārraksta galvenes. Drošības vai ātruma spraudnis dažkārt katrā lapā iestata
Cache-Control: public, max-age=.... Tad no-cache galveņu vairs nav. - Sesija katram apmeklētājam. Parasti WooCommerce iestata sesijas sīkdatni tikai tad, kad grozā kaut kas ir. Ja spraudnis vai motīvs jau katram apmeklētājam izveido sesiju (sīkdatni
wp_woocommerce_session_vaiPHPSESSIDpirmajā apmeklējumā), lapas kešatmiņa nedarbojas nevienam, un Jūsu veikals noslogotā laikā ir lēns. - Ģeolokācija. Sadaļā WooCommerce > Iestatījumi > Vispārīgi Jūs izvēlaties klienta noklusējuma atrašanās vietu. Ar parasto "Geolocate" serveris katram apmeklētājam aprēķina valsti, un, ja cenas atšķiras pa valstīm, tas nav savienojams ar lapas kešatmiņu. Tāpēc WooCommerce ir opcija "Geolocate (with page caching support)", kas nosaka valsti ar papildu pieprasījumu pārlūkā. Ja Jums pirms apmaksas nav vajadzīgas cenas vai PVN pa valstīm, izvēlieties veikala valsti: tas ir vienkāršākais. Ģeolokācijai WooCommerce periodiski lejupielādē MaxMind datubāzi.
LiteSpeed serverī (kā WebOké) spraudnis LiteSpeed Cache pats nodrošina izņēmumus WooCommerce; pārbaudiet tos izņēmumu iestatījumos. Citos tīmekļa serveros un pie citiem hostinga pakalpojumu sniedzējiem ar citu kešošanas spraudni tas darbojas līdzīgi.
Ko lapas kešatmiņa neatrisina
Grozu un apmaksu vienmēr veido PHP un datubāze. Noslogotā laikā (akcija, jaunumu vēstule) tieši šajās lapās Jūsu klienti tērē naudu. Tur palīdz citas lietas:
- Objektu kešatmiņa, piemēram, Redis, saglabā datubāzes vaicājumu rezultātus atmiņā. Veikalā, kur ir daudz lapu, kas nevar nonākt lapas kešatmiņā, tas dod jūtami lielāku ieguvumu nekā parastā vietnē. Jūsu hostingam jāpiedāvā Redis (WebOké tas ir iespējams, DA 15.7); pēc tam Jūs to ieslēdzat ar spraudni.
- Groza fragmenti. Klasiskie motīvi atjaunina grozu galvenē ar skriptu (
wc-cart-fragments), kas, ja grozā ir preces, veic papildu pieprasījumu. Mūsdienīgiem bloku motīviem ar mini groza bloku tas ir mazāk vajadzīgs. Neielādējiet šādus skriptus lapās, kur tie neko nedara. - Iztīrītas plānotās darbības. WooCommerce izmanto Action Scheduler fona uzdevumiem (nodarbība 7.3). Pabeigtās darbības pēc noklusējuma tiek iztīrītas pēc mēneša. Ja saraksts tomēr izaug līdz simtiem tūkstošu, bieži paplašinājuma dēļ, kas nepārtraukti kaut ko plāno, vai neizdevušos darbību dēļ, datubāzes vaicājumi kļūst lēnāki. Sadaļā WooCommerce > Statuss > Plānotās darbības apskatiet neizdevušos un gaidošo darbību skaitu.
- HPOS. Pasūtījumi atsevišķās tabulās (nodarbība 1.2) padara meklēšanu pasūtījumos ātrāku nekā vecajā ierakstu tabulā. Esošajiem veikaliem pāreja jāveic pašiem (nodarbība 6.2 par rezerves kopijām pirms tam).
- Aktuāla PHP versija un pietiekami daudz atmiņas (nodarbība 7.2).
Praksē: kā tas izskatās WooCommerce
Pārbaudiet to Theehuis Example veikalā privātā logā ar sava pārlūka izstrādātāja rīkiem (F12, cilne Tīkls, pirmais pieprasījums):
- Sākumlapa, ielādēt divas reizes: otrajā reizē galvene, piemēram,
x-litespeed-cache: hitvaicf-cache-status: HIT. Pirmajā apmeklējumā nav sīkdatneswp_woocommerce_session_. shop.example.com/winkelwagen/, ielādēt divas reizes: nav trāpījuma, uncache-controlarno-cachevaiprivate.- Tas pats apmaksas lapai un Mans konts.
- Ievietojiet produktu grozā un ielādējiet produkta lapu: Jūs redzat savu grozu, nevis saglabātu versiju.
Kopsavilkums
- Lapas, kas visiem ir vienādas, kešatmiņā; grozs, apmaksa un Mans konts nekad.
- WooCommerce pats iestata DONOTCACHEPAGE, no-cache galvenes un sīkdatnes; pārbaudiet, vai nekas tās nenoņem vai neignorē.
- Pievērsiet uzmanību pārdēvētām adresēm, CDN noteikumiem, spraudņiem, kas pārraksta galvenes, sesijām katram apmeklētājam un ģeolokācijai.
- Redis, iztīrītas plānotās darbības, HPOS un piemērota PHP versija palīdz tur, kur lapas kešatmiņa nevar.
- Pārbaudiet, divreiz ielādējot lapu privātā logā, un izlasiet galvenes.
Tests (quiz)
Uzdevums
Uzdevums A6.4: Vai grozs un apmaksa netiek kešoti? Ievadiet sava veikala adresi un sava groza un apmaksas lapas adreses (un, ja vēlaties, Mans konts). Programma pieprasa sākumlapu divas reizes ar 2 sekunžu starplaiku, bez sīkdatnēm, un pēc tam arī katru veikala lapu divas reizes. Grozā nekas netiek ievietots un nekas netiek pasūtīts. Zaļš, ja sākumlapa otrajā reizē tiek rādīta no kešatmiņas (vai ir skaidri ātrāka), neiestatot sesijas sīkdatni, un ja katrai veikala lapai otrajā reizē nav kešatmiņas trāpījuma un tā nosūta Cache-Control ar no-cache, no-store, private vai max-age=0. Oranžs, ja sākumlapa neizmanto kešatmiņu vai ja veikala lapai nav trāpījuma, bet nav arī no-cache galvenes. Sarkans, ja ir kešatmiņas trāpījums grozā, apmaksā vai Mans konts vai ja sākumlapa katram apmeklētājam sāk WooCommerce sesiju.
Zaļa atzīme nozīmē, ka šī pārbaude pašlaik ir kārtībā, nevis to, ka Jūsu veikals ir drošs.
Papildu lasāmviela
Darbības panelī attiecas uz WebOké; pie citiem pakalpojumu sniedzējiem tas darbojas līdzīgi.
- Bezmaksas WordPress kurss 6.2: Kešatmiņa
- Bezmaksas WordPress kurss 6.3: Attēli, PHP un citi ātrdarbības uzlabojumi
- DirectAdmin rokasgrāmata 15.7: Redis
- Jūsu tīmekļa vietne darbojas lēni vai izmanto pārāk daudz CPU: kā padarīt to ātrāku
- Vai šī ir datu noplūde, un vai man par to ir jāziņo?
- Configuring caching plugins (developer.woocommerce.com, angļu valodā): https://developer.woocommerce.com/docs/best-practices/performance/configuring-caching-plugins/
