Sivujen välimuisti, CDN:t ja suostumusbannerit: miten välttää väärän suostumustilan tarjoilu
Nopeat sivut, väärä suostumus
Sivujen välimuistitus on yksi parhaista asioista nopeuden ja palvelinkustannusten kannalta. Se on myös yksi helpoimmista tavoista rikkoa suostumusasetukset huomaamatta. Välimuisti tekee täsmälleen sen, mitä sille käsketään: se tallentaa vastauksen kerran ja tarjoilee sen kaikille, jotka vastaavat samaa avainta. Jos tallennettu vastaus sisältää jotain, mikä on ominaista yhden kävijän suostumusvalinnalle tai sijainnille, seuraava kävijä saa sen myös.
Tämä opas käsittelee välimuistikerroksia, jotka tyypillisesti sijaitsevat julkaisijan sivuston edessä — CDN:n reunavälimuistit, koko sivun välimuistilaajennukset, reverse proxyt, service workerit ja itse selain — ja sitä, miten estät kutakin tarjoilemasta väärää suostumuskokemusta.
Perussääntö: pidä suostumus poissa välimuistitetusta HTML:stä
Turvallisin arkkitehtuuri renderöi välimuistitetun HTML-sivun suostumusneutraalina. Sivu sisältää CMP-latauksen ja tagisi estetyssä tai odottavassa tilassa, mutta ei päätöstä tästä nimenomaisesta kävijästä. CMP suoritetaan sitten selaimessa, lukee tallennetun valinnan, päättää, näytetäänkö banneri, ja vapauttaa tagit sen mukaisesti.
Ongelmat alkavat, kun palvelin tekee suostumuspäätöksiä renderöintihetkellä, esimerkiksi:
- teema tai laajennus, joka tulostaa mainos- tai analytiikkatagit vain, kun suostumuseväste on olemassa;
- palvelinpuolen koodi, joka jättää bannerin merkinnät pois kävijöiltä, jotka ovat jo valinneet;
- mallit, jotka upottavat kävijän suostumustilan inline-skriptin muuttujaan.
Kun sivu on välimuistitettu, ensimmäisen kävijän tilasta tulee kaikkien tila. Kävijä, joka hylkäsi seurannan, voi saada sivun, jossa tagit ovat jo aktiivisia, tai uusi kävijä ei välttämättä koskaan näe banneria, koska välimuistikopio tuli joltakulta, joka oli jo sulkenut sen.
Miksi “Vary: Cookie” on harvoin vastaus
Oppikirjaratkaisu kävijäkohtaiselle sisällölle on käskeä välimuistien vaihdella eväste-otsikon mukaan. Käytännössä kävijöillä on monta evästettä yksilöllisillä arvoilla, joten koko eväste-otsikon mukaan vaihtelu laskee välimuistin osumasuhteen yleensä lähes nollaan. Jotkin CDN:t antavat muodostaa välimuistiavaimen yhden evästearvon perusteella, mikä on toimiva ratkaisu, jos suostumusevästeellä on pieni määrä mahdollisia tiloja, mutta se lisää monimutkaisuutta ja silti kertoo välimuistikopioiden määrän. Päätöksen siirtäminen selaimeen on yksinkertaisempaa ja pitää välimuistin tehokkaana.
Maantiede reunalla
Monet julkaisijat näyttävät eri bannereita alueittain: ennakkosuostumusbanneri EU:lle ja Britannialle, kieltäytymisilmoitus Yhdysvaltain osavaltioille ja jotain kevyempää muualla. Jos palvelin valitsee variantin kävijän IP-osoitteen perusteella ja sivu välimuistitetaan, eurooppalainen lukija voi saada välimuistitetun Yhdysvaltain sivun tai päinvastoin.
Kolme mallia välttää tämän:
- Asiakaspuolen paikannus. Anna CMP:n määrittää alue selaimessa, jolloin välimuistitettu HTML pysyy kaikille samana.
- Maa välimuistiavaimessa. Jos päätös on tehtävä reunalla, sisällytä välimuistiavaimeen CDN:si tarjoama maakoodi. Saat yhden välimuistitetun kopion maata kohti, mikä on ennustettavaa.
- Välimuistittamaton reunalogiikka. Suorita aluepäätös reunafunktiossa, joka lisää pienen välimuistittoman arvon muuten välimuistitettuun sivuun.
Minkä tahansa valitsetkin, dokumentoi se. Maantieteeseen liittyvät virheet ovat vaikeimmin toistettavien joukossa, koska ne ilmenevät vain yhdessä paikassa oleville kävijöille, jotka sattuvat saamaan jonkun toisessa paikassa välimuistittaman sivun.
CMP-skriptin itsensä välimuistitus
CMP-latauksen välimuistitus pitkäksi aikaa on hyväksi suorituskyvylle, mutta sillä on hintansa, kun konfiguraatio muuttuu. Jos päivität toimittajia, käyttötarkoituksia tai bannerin tekstiä ja skripti tai konfiguraatiotiedosto on välimuistitettu vuodeksi, jotkut kävijät näkevät edelleen vanhan version. Tarkista, miten CMP:si versioi tiedostonsa: muuttuva tiedostonimi tai versioparametri antaa välimuistittaa aggressiivisesti ja silti ottaa muutokset käyttöön heti. Varmista myös, ettei oma CDN:si poista kyselymerkkijonoja kolmannen osapuolen skriptien URL-osoitteista, jos CMP luottaa niihin.
Service workerit ja offline-välimuistit
Progressiivisen verkkosovelluksen kerroksen sisältävät sivustot välimuistittavat usein HTML:n service workerissa. Sama sääntö pätee: älä koskaan tallenna sivua, joka heijastaa tiettyä suostumuspäätöstä. Sulje suostumukseen liittyvät päätepisteet ja asetuskeskussivut service workerin välimuistituksen ulkopuolelle ja varmista, että tuore CMP-konfiguraatio on aina haettavissa.
Takaisin/eteenpäin-välimuisti
Nykyaikaiset selaimet pitävät äskettäin käydyt sivut muistissa, jotta takaisin-painike palauttaa ne heti. Jos kävijä avaa asetuskeskuksen yhdellä sivulla, peruuttaa suostumuksen ja painaa sitten takaisin, palautetulla sivulla tagit voivat yhä pyöriä edellisestä ajasta. Kuuntele pageshow-tapahtumaa ja tarkista sen persisted-ominaisuus: kun sivu palautetaan tästä välimuistista, lue tallennettu suostumustila uudelleen ja pysäytä tai käynnistä tagit vastaavasti.
Testausrutiini
- Lataa sivu puhtaassa istunnossa, hylkää, lataa sitten toinen sivu ja varmista, ettei yksikään seurantatagi laukea.
- Toista toisella puhtaalla selaimella ja varmista, että banneri ilmestyy, mikä todistaa, ettei sitä ole välimuistitettu pois.
- Tarkista vastausotsikot nähdäksesi, tarjoillaanko sivuja välimuistista, ja vertaa HTML:ää suostumusevästeen kanssa ja ilman — sen pitäisi olla identtinen.
- Testaa vähintään kahdesta alueesta välimuistin tyhjentämisen jälkeen ja uudelleen välimuistin lämmettyä.
- Peru suostumus, käytä takaisin-painiketta ja varmista, että tagit pysähtyvät.
Keskeiset opit
- Välimuistitetun HTML:n tulisi olla suostumusneutraali; anna CMP:n päättää selaimessa.
- Vältä vaihtelua koko eväste-otsikon mukaan; se tuhoaa osumasuhteen.
- Jos bannerit eroavat alueittain, päätä asiakaspuolella tai lisää maa välimuistiavaimeen.
- Versioi CMP-tiedostot, jotta pitkät välimuistiajat eivät viivästytä konfiguraatiomuutoksia.
- Huomioi service workerit ja takaisin/eteenpäin-välimuisti ja testaa lämmitetyllä välimuistilla, ei vain tyhjennyksen jälkeen.