- Vaša košarica je trenutno prazna
WordPress optimizacija: Cache in poizvedbeni nizi
Nedavno smo na našem blogu pisali o tem, kako se pripraviti na povečan obisk spletne strani, do katerega lahko pride ob večji oglaševalski kampanji. Našteli smo celo vrsto pomembnih ukrepov za hitro delovanje strani, med katerimi je bila izpostavljena nastavitev učinkovitega predpomnjenja.
Predpomnjenje omogoča, da se elementi spletne strani posameznemu obiskovalcu ne nalagajo vedno znova, temveč so shranjeni v predpomnilniku, kar omogoča mnogo hitrejše nalaganje. Pri tem pa morate biti uporabniki platforme WordPress pozorni, da pri vtičniku za predpomnjenje pravilno nastavite ignoriranje t. i. poizvedbenih nizov (ang. query strings).
Težava je namreč v tem, da se lahko obiskovalcem, ki do vašega spletnega mesta dostopajo prek oglasov (Google, Facebook, Instagram, …) ali povezav v e-novicah, nalagajo strani, ki niso predpomnjene. In če je takšnih obiskovalcev v kratkem času veliko, lahko vaša spletna stran prične delovati zelo počasi ali celo preneha delovati.
Kazalo
- Kaj je poizvedbeni niz?
- Težava s predpomnjenjem poizvedbenih nizov
- Optimizacija WordPress vtičnikov za predpomnjenje
- Cloudflare: predpomnjenje poizvedbenih nizov
Kaj je poizvedbeni niz?
Poizvedbeni niz (ang. query string) je del spletne povezave oz. URL-ja (Uniform Resource Locator), ki dodeljuje vrednosti določenim atributom, znanim kot ključi ali parametri.
Uporaba poizvedbenih nizov
Poizvedbeni nizi se uporabljajo za pošiljanje dodatnih podatkov na strežnik, na primer za:
- filtriranje vsebine (npr. v spletnih trgovinah),
- iskanje informacij (npr. v spletnih iskalnikih),
- uporabo sledilnih piškotkov (npr. v oglasih in e-novicah),
- prenos nastavitev uporabnika (npr. prek kontaktnih obrazcev),
- prenos drugih podatkov, potrebnih za obdelavo zahteve.
Primeri poizvedbenih nizov
Oglejmo si nekaj primerov URL naslovov, ki vključujejo poizvedbeni niz:
https://www.spletna-trgovina.com/tekaska-obutev?brand=salomon&size=43&color=white
https://duckduckgo.com/?q=poizvedba&df=y&ia=web
https://www.vasadomena.si/?fbclid=IwZXh0bgNhZW0CeTAAAR2wroBdH8Wj34YF1ArTFBp
https://domena.io/blog?utm_source=newsletter&utm_medium=email&utm_campaign=julij24
Struktura poizvedbenega niza
Spoznajte strukturo poizvedbenega niza in znake, ki se v njem uporabljajo:
- poizvedbeni niz se začne z znakom vprašaja (
?
), - sledi en ali več parov “ključ – vrednost”, kjer sta elementa ločena z znakom za enačaj (
=
), - posamezni pari “ključ – vrednost” so med seboj ločeni z znakom ampersand (
&
).
Poizvedbeni nizi so pomemben del spletnih tehnologij, saj omogočajo dinamično interakcijo med uporabniki in strežnikom. Zaradi svoje enostavnosti in funkcionalnosti so pogosto uporabljeni v različnih spletnih aplikacijah.
Težava s predpomnjenjem poizvedbenih nizov
Vtičniki za predpomnjenje delujejo tako, da v predpomnilnik shranijo vsak URL posebej. Predpostavimo, da ima vaše spletno mesto tri strani:
https://www.vasadomena.si/izdelki
https://www.vasadomena.si/storitve
https://www.vasadomena.si/o-podjetju
Vtičnik bo shranil eno kopijo vsake strani v predpomnilnik in to kopijo serviral obiskovalcem, s čimer bo nalaganje posameznih strani bistveno hitrejše. Na ta način se namreč v ozadju ne bodo vedno znova izvajale številne poizvedbe v podatkovni bazi in nalaganje posameznih elementov.
Do težave pa pride pri URL naslovih, ki vsebujejo poizvedbeni niz, saj vtičniki za predpomnjenje tudi takšne povezave zaznajo kot edinstvene strani. V predpomnilnik se tako shranijo strani:
https://www.vasadomena.si/izdelki
https://www.vasadomena.si/izdelki?brand=nike
https://www.vasadomena.si/izdelki?brand=nike&size=43
https://www.vasadomena.si/izdelki?fbclid=AR2wroBdHoWj34YF1bATroBdH8Wj3
https://www.vasadomena.si/izdelki?utm_source=google&utm_medium=cpc
Vtičnik zgornjih pet strani zazna kot unikatne, zato vsako posebej shrani v predpomnilnik, čeprav je vsebina na nekaterih izmed njih povsem identična. Nekatere poizvedbene nize bi torej bilo treba shraniti ločeno, spet druge ne.
- Poizvedbeni niz, ki vpliva na prikaz strani (npr. uporaba filtrov v spletni trgovini), je v predpomnilnik smiselno shraniti posebej, saj vsak vrne drugačno vsebino strani.
- Poizvedbeni niz, ki ne vpliva na vsebino ali strukturo strani (npr. sledilni piškotki), bi moral biti predpomnjen kot izvirna stran.
Poizvedbeni nizi, ki jih je smiselno izvzeti iz predpomnjenja
Najpogostejši poizvedbeni nizi, povezani s sledilnimi piškotki (ang. tracking cookies), ki bi morali biti predpomnjeni kot izvirna stran, so:
- fbclid – poizvedbeni niz Facebook doda vsem povezavam, ki s Facebooka vodijo na druge spletne strani.
- ref – poizvedbeni niz Google uporablja za sledenje konverzijam.
- utm* – poizvedbeni niz uporabljajo mnogi vtičniki oz. storitve za sledenje napotiteljem.
- gad – poizvedbeni niz Google uporablja za diagnostiko in odpravljanje težav z oglasi v platformi Google Ads.
Zgornje poizvedbene nize je iz sistema predpomnjenja smiselno izvzeti zaradi treh razlogov:
- Vtičnik bo naložil isto predpomnjeno stran kot izvoren URL brez poizvedbenega niza, s čimer bo spletna stran obiskovalcu prikazana bistveno hitreje.
- Vtičnik ne bo porabil (ogromno) prostora na strežniku s stalnim kreiranjem novih predpomnjenih strani za vsak nov poizvedbeni niz.
- Ker bo obiskovalcem za različne poizvedbene nize prikazana predpomnjena izvorna stran, tudi ob hkratnem navalu več uporabnikov (npr. med oglasno kampanjo) ne bo prišlo do preobremenitve spletne strani.
Če vaše WordPress spletno mesto uporablja tudi druge poizvedbene nize, ki jih zgoraj nismo našteli, jih z uporabo naprednega vtičnika za predpomnjenje lahko izvzamete. Brez skrbi, tudi če izključite poizvedbene nize, ki služijo sledenju (npr. konverzij), bodo funkcije delovale normalno, saj bo strežnik še vedno zabeležil zadetke (ang. hits) za te URL-je s poizvedbenimi nizi.
Optimizacija WordPress vtičnikov za predpomnjenje
Če ste natančno preverili zgornje primere poizvedbenih nizov, ste verjetno opazili atribut ?fbclid=
z vrednostjo naključnega zaporedja znakov, ki ga na povezave do spletnih strani doda platforma Facebook. To lahko predstavlja veliko težavo v primeru obsežne oglaševalske kampanje, pri kateri povezave vodijo do spletne strani ali trgovine, kjer predpomnjenje ni urejeno z mislijo na možnost “neskončnega” števila različnih poizvedbenih nizov.
Rezultat tega je, da se vsakemu posameznemu obiskovalcu prikaže ne-predpomnjena verzija spletne strani, kar pomeni počasnejše nalaganje, ob sočasnem obisku velikega števila obiskovalcev pa celo možnost preobremenitve oz. nedelovanja spletnega mesta.
Najbolj popularni WordPress vtičniki za predpomnjenje omogočajo, da se kljub poizvedbenemu nizu v URL-ju obiskovalcem naložijo predpomnjene strani, s čimer se opisani težavi izognemo.
LiteSpeed Cache
LiteSpeed Cache v predpomnilnik privzeto shranjuje vse poizvedbene nize. Če želite posamezne nize izključiti iz sistema predpomnjenja, lahko to uredite v nastavitvah vtičnika:
LiteSpeed Cache -> Cache -> Drop Query String
V večini primerov je v polje smiselno vnesti naslednje zapise:
- fbclid
- gclid
- utm*
- _ga
- gad
Dokumentacija: https://docs.litespeedtech.com/lscache/lscwp/cache/
WP Rocket
WP Rocket v predpomnilnik privzeto ne shranjuje strani s poizvedbenimi nizi. Za vse spodaj navedene parametre ignorira poizvedbeni niz in naloži standardno datoteko iz predpomnilnika, ne glede na vrednosti parametrov v URL-ju:
- utm*
- fb_action_ids
- fb_action_types
- fb_source
- fbclid
- _ga
- gclid
- age-verified
- ao_noptimize
- usqp
- cn-reloaded
Vtičnik omogoča, da vnesete poizvedbene nize, za katere želite, da se shranijo v predpomnilnik. Če bi npr. želeli predpomniti strani, ki vsebujejo poizvedbeni niz country
, lahko omenjeni zapis na seznam dodate tukaj:
WP Rocket -> Advanced Rules -> Cache Query String(s)
Dokumentacija: https://docs.wp-rocket.me/article/971-caching-query-strings
Če želite spremeniti privzete nastavitve predpomnjanja poizvedbenih nizov ali med izvzete nize dodati nove, morate namestiti dodaten vtičnik: WP Rocket | Ignore Query Strings. Na povezavi boste našli tudi navodila za pravilno nastavitev omenjenega vtičnika.
Swift Performance
Swift Performance privzeto zaobide predpomnjenje za zahteve POST in vse zahteve GET, kjer poizvedbeni niz ni prazen. Vtičnik ignorira naslednje GET parametre:
- utm_source
- utm_campaign
- utm_medium
- utm_expid
- utm_term
- utm_content
- fb_action_ids
- fb_action_types
- fb_source
- fbclid
- _ga
- gclid
- age-verified
Kot prikazano na spodnji sliki, vtičnik omogoča dodajanje dodatnih GET parametrov, izvzetih iz sistema predpomnjenja.
Dokumentacija: https://docs.swiftperformance.io/knowledgebase/ignore-get-params/
Cloudflare: predpomnjenje poizvedbenih nizov
Cloudflare je omrežje za dostavo vsebin (CDN – Content Delivery Network), ki omogoča hitrejše nalaganje spletnih strani na način, da posameznemu obiskovalcu vsebino prikaže z njemu najbližjega strežnika. Za izboljšanje hitrosti in učinkovitosti spletnih strani uporablja tehnologijo predpomnjenja, zato si v nadaljevanju poglejmo, kaj v povezavi s predpomnjenjem poizvedbenih nizov lahko urejate v sistemu Cloudflare.
Raven predpomnjenja (ang. Caching Level)
Znotraj uporabniškega računa lahko nastavite, koliko statične vsebine spletnega mesta želite, da Cloudflare shrani v predpomnilnik. Višji nivo predpomnjenja lahko pospeši čas nalaganja strani.
Nastavitev je na voljo tu: Cloudflare -> Caching -> Configuration -> Caching Level
Izbirate lahko med tremi nivoji predpomnjenja:
- No query string: Sistem servira vir iz predpomnilnika, ko ni poizvedbenega niza.
- Ignore query string: Sistem servira isti vir vsem, neodvisno od poizvedbenega niza.
- Standard: Sistem servira drug vir vsakič, ko se poizvedbeni niz spremeni.
Dokumentacija: https://developers.cloudflare.com/cache/how-to/set-caching-levels/
Svetujemo vam, da izberete nastavitev, ki vsem servira isti vir, neodvisno od poizvedbenega niza (Ignore query string), nato pa po potrebi nastavite dodatna pravila predpomnjenja, o čemer smo več zapisali v nadaljevanju.
Z izbiro omenjene ravni predpomnjenja (Ignore query string) boste dosegli, da bodo vašim obiskovalcem servirane predpomnjene izvirne strani, tudi če bo URL vseboval poizvedbeni niz (npr. fbclid
ali gclid
).
Pravila predpomnjenja (ang. Cache Rules)
Sekcija nastavitev Cache Rules omogoča nastavitev pravil, kateri viri naj bodo predpomnjeni in kako dolgo naj v predpomnilniku ostanejo shranjeni.
Nastavitev je na voljo tu: Cloudflare -> Caching -> Cache Rules
- Kliknite na modri gumb Create rule.
- V polje Rule name vnesite smiselno ime novega pravila za predpomnjenje.
- V polju
Field
izberite URI Query String, v poljuOperator
nastavite contains, v poljeValue
pa vnesite poizvedbeni niz, ki ga želite dodati v proces predpomnjenja. Na desni strani kliknite na gumb Or, da vnesete še morebitne dodatne poizvedbene nize. - Pri nastavitvi
Cache elibility
izberite možnost Eligible for cache. - Shranite in aktivirajte novo pravilo s klikom na gumb Deploy.
Dokumentacija: https://developers.cloudflare.com/cache/how-to/cache-rules/
Z dodatnimi pravili za predpomnjenje boste dosegli, da se bodo v predpomnilnik shranile strani z določenimi poizvedbenimi nizi. V primeru spletne trgovine je denimo smiselno predpomniti strani, ki jih ustvari možnost filtriranja, npr. prikaz izdelkov po blagovnih znamkah (brand
).
Z učinkovitim upravljanjem predpomnjenja strani, ki vključujejo poizvedbeni niz, ne boste zgolj pospešili delovanja svojega spletnega mesta. Hkrati boste poskrbeli za to, da bo le-to delovalo brezhibno tudi ob sočasnem obisku večjega števila obiskovalcev.
KOMENTARJI
Dodatna vprašanja?
KOMENTIRAJTE OBJAVO
Vaš komentar je bil uspešno oddan
Komentar bo viden na strani, ko ga naši moderatorji potrdijo.