Predpomnjenje strani, CDN-ji in pasice privolitve: kako se izogniti posredovanju napačnega stanja privolitve

Hitre strani, napačna privolitev

Predpomnjenje strani je ena najboljših stvari, ki jih lahko storite za hitrost in stroške gostovanja. Hkrati je tudi eden najlažjih načinov, da nastavitev privolitve pokvarite, ne da bi opazili. Predpomnilnik naredi točno to, kar mu rečemo: odgovor enkrat shrani in ga postreže vsem, ki ustrezajo istemu ključu. Če ta shranjeni odgovor vsebuje karkoli, kar je specifično za izbiro privolitve ali lokacijo enega obiskovalca, ga dobi tudi naslednji obiskovalec.

Ta vodnik zajema plasti predpomnjenja, ki običajno stojijo pred spletnim mestom založnika — CDN edge predpomnilnike, vtičnike za predpomnjenje celih strani, reverse proxyje, service workerje in sam brskalnik — ter kako preprečiti, da bi vsaka od njih postregla napačno izkušnjo privolitve.

Temeljno pravilo: privolitev držite stran od predpomnjenega HTML-ja

Najvarnejša arhitektura predpomnjeno stran HTML upodobi kot nevtralno glede privolitve. Stran vsebuje nalagalnik CMP in vaše oznake v blokiranem stanju ali stanju čakanja, vendar brez odločitve o tem posameznem obiskovalcu. CMP nato deluje v brskalniku, prebere shranjeno izbiro, odloči, ali bo prikazal pasico, in ustrezno sprosti oznake.

Težave se začnejo, ko strežnik sprejema odločitve o privolitvi ob upodabljanju, na primer:

Ko je taka stran predpomnjena, stanje prvega obiskovalca postane stanje vseh. Obiskovalec, ki je zavrnil sledenje, lahko dobi stran z že aktivnimi oznakami, ali pa novi obiskovalec pasice morda nikoli ne vidi, ker predpomnjena kopija izvira od nekoga, ki jo je že zaprl.

Zakaj “Vary: Cookie” redko reši težavo

Učbeniška rešitev za vsebino po obiskovalcu je, da predpomnilnikom naročite, naj variirajo po glavi piškotka. V praksi obiskovalci nosijo veliko piškotkov z edinstvenimi vrednostmi, zato variiranje po celotni glavi piškotka običajno spusti stopnjo zadetkov predpomnilnika skoraj na nič. Nekateri CDN-ji omogočajo, da ključ predpomnilnika zgradite iz ene same vrednosti piškotka, kar je izvedljivo, če ima vaš piškotek privolitve majhno število možnih stanj, vendar doda zapletenost in še vedno množi število predpomnjenih kopij. Premik odločitve v brskalnik je preprostejši in ohranja predpomnilnik učinkovit.

Geografija na robu

Mnogi založniki prikazujejo različne pasice po regijah: opt-in pasico za EU in VB, obvestilo o odjavi za ameriške zvezne države in kaj lažjega drugje. Če strežnik varianto izbere glede na IP-naslov obiskovalca in je ta stran predpomnjena, lahko evropski bralec dobi predpomnjeno ameriško stran ali obratno.

Trije vzorci se temu izognejo:

  1. Geolokacija na strani odjemalca. Naj CMP regijo določi v brskalniku, tako da predpomnjeni HTML ostane za vse enak.
  2. Država v ključu predpomnilnika. Če morate odločati na robu, v ključ predpomnilnika vključite kodo države, ki jo zagotavlja vaš CDN. Dobite eno predpomnjeno kopijo na državo, kar je predvidljivo.
  3. Nepredpomnjena logika na robu. Regionalno odločitev izvedite v edge funkciji, ki v sicer predpomnjeno stran vstavi majhno, nepredpomnjeno vrednost.

Kar koli izberete, dokumentirajte. Geografske napake so med najtežje ponovljivimi, ker se pojavijo samo pri obiskovalcih na enem mestu, ki po naključju dobijo stran, ki jo je predpomnil nekdo na drugem.

Predpomnjenje samega skripta CMP

Dolgo predpomnjenje nalagalnika CMP je dobro za zmogljivost, a ima ceno, ko se konfiguracija spremeni. Če posodobite ponudnike, namene ali besedilo pasice, skripta ali konfiguracijska datoteka pa je predpomnjena eno leto, bodo nekateri obiskovalci še naprej videli staro različico. Preverite, kako vaš CMP označuje različice datotek: spreminjajoče se ime datoteke ali parameter različice omogoča agresivno predpomnjenje ob takojšnjem uvajanju sprememb. Prav tako potrdite, da vaš CDN ne odstranjuje nizov poizvedb iz URL-jev skript tretjih oseb, če se CMP nanje zanaša.

Service workerji in izvenmrežni predpomnilniki

Spletna mesta s plastjo progresivne spletne aplikacije pogosto predpomnijo HTML v service workerju. Velja isto pravilo: nikoli ne shranjujte strani, ki odraža določeno odločitev o privolitvi. Končne točke, povezane s privolitvijo, in strani centra nastavitev izključite iz predpomnjenja service workerja ter poskrbite, da je mogoče vedno dobiti svežo konfiguracijo CMP.

Predpomnilnik back/forward

Sodobni brskalniki nedavno obiskane strani hranijo v pomnilniku, da jih gumb za nazaj takoj obnovi. Če obiskovalec na eni strani odpre center nastavitev, prekliče privolitev in nato pritisne nazaj, ima obnovljena stran morda še vedno oznake, ki tečejo od prej. Poslušajte dogodek pageshow in preverite njegovo lastnost persisted: ko se stran obnovi iz tega predpomnilnika, znova preberite shranjeno stanje privolitve in oznake ustavite ali zaženite skladno z njim.

Rutina testiranja

Ključne ugotovitve

← Blog Preberi vse →