Cachovanie stránok, CDN a consent bannery: Ako nepodať nesprávny stav súhlasu
Rýchle stránky, nesprávny súhlas
Cachovanie stránok je jedna z najlepších vecí, ktoré môžete urobiť pre rýchlosť a náklady na hosting. Je to aj jeden z najjednoduchších spôsobov, ako nepozorovane pokaziť nastavenie súhlasu. Cache robí presne to, čo jej poviete: odpoveď uloží raz a podáva ju každému, kto zodpovedá rovnakému kľúču. Ak uložená odpoveď obsahuje čokoľvek špecifické pre voľbu súhlasu alebo polohu jedného návštevníka, dostane to aj ďalší návštevník.
Tento sprievodca pokrýva vrstvy cachovania, ktoré typicky stoja pred webom vydavateľa — edge cache CDN, pluginy na cachovanie celých stránok, reverzné proxy, service workery a samotný prehliadač — a ako každej z nich zabrániť v podávaní nesprávneho zážitku so súhlasom.
Základné pravidlo: Držte súhlas mimo cachovaného HTML
Najbezpečnejšia architektúra renderuje cachovanú HTML stránku ako neutrálnu voči súhlasu. Stránka obsahuje loader CMP a vaše tagy v blokovanom alebo čakajúcom stave, ale žiadne rozhodnutie o tomto konkrétnom návštevníkovi. CMP potom beží v prehliadači, načíta uloženú voľbu, rozhodne, či zobraziť banner, a príslušne uvoľní tagy.
Problémy začínajú, keď server robí rozhodnutia o súhlase v čase renderovania, napríklad:
- téma alebo plugin, ktorý vypisuje reklamné či analytické tagy len pri prítomnosti cookie súhlasu;
- serverový kód, ktorý vynecháva markup bannera pre návštevníkov, ktorí sa už rozhodli;
- šablóny, ktoré vkladajú stav súhlasu návštevníka do premennej inline skriptu.
Keď sa takáto stránka uloží do cache, stav prvého návštevníka sa stane stavom všetkých. Návštevník, ktorý odmietol sledovanie, môže dostať stránku s už aktívnymi tagmi, alebo nový návštevník nemusí banner nikdy uvidieť, pretože cachovaná kópia pochádza od niekoho, kto ho už zavrel.
Prečo „Vary: Cookie“ málokedy je odpoveď
Učebnicová oprava obsahu pre jednotlivých návštevníkov je povedať cache, aby variovala podľa hlavičky cookie. V praxi majú návštevníci veľa cookies s jedinečnými hodnotami, takže variovanie podľa celej hlavičky cookie zvyčajne zníži hit rate cache takmer na nulu. Niektoré CDN umožňujú zostaviť kľúč cache z hodnoty jedinej cookie, čo je použiteľné, ak má vaša cookie súhlasu malý počet možných stavov, ale pridáva to komplexitu a stále to znásobuje počet cachovaných kópií. Presunúť rozhodnutie do prehliadača je jednoduchšie a cache zostane efektívna.
Geografia na edge
Mnohí vydavatelia zobrazujú rôzne bannery podľa regiónu: banner opt-in pre EÚ a Spojené kráľovstvo, oznam o odhlásení pre americké štáty a niečo ľahšie inde. Ak server vyberie variant podľa IP adresy návštevníka a stránka sa cachuje, európsky čitateľ môže dostať cachovanú americkú stránku, alebo naopak.
Tri vzorce sa tomu vyhýbajú:
- Geolokácia na strane klienta. Nechajte CMP určiť región v prehliadači, aby cachované HTML zostalo pre všetkých rovnaké.
- Krajina v kľúči cache. Ak musíte rozhodovať na edge, zahrňte do kľúča cache kód krajiny, ktorý poskytuje vaše CDN. Dostanete jednu cachovanú kópiu na krajinu, čo je predvídateľné.
- Necachovaná edge logika. Spustite regionálne rozhodnutie v edge funkcii, ktorá vloží malú necachovanú hodnotu do inak cachovanej stránky.
Nech vyberiete čokoľvek, zdokumentujte to. Geo chyby patria medzi najťažšie reprodukovateľné, pretože sa objavia len návštevníkom na jednom mieste, ktorí náhodou dostanú stránku cachovanú niekým z iného miesta.
Cachovanie samotného skriptu CMP
Dlhé cachovanie loadera CMP je dobré pre výkon, ale má cenu, keď sa zmení konfigurácia. Ak aktualizujete dodávateľov, účely alebo text bannera a skript alebo konfiguračný súbor je cachovaný rok, niektorí návštevníci budú naďalej vidieť starú verziu. Skontrolujte, ako vaše CMP verzuje súbory: meniaci sa názov súboru alebo parameter verzie vám umožní cachovať agresívne a zároveň nasadzovať zmeny okamžite. Overte tiež, že vaše vlastné CDN neodstraňuje query stringy z URL skriptov tretích strán, ak sa na ne CMP spolieha.
Service workery a offline cache
Weby s vrstvou progresívnej webovej aplikácie často cachujú HTML v service workeri. Platí rovnaké pravidlo: nikdy neukladajte stránku, ktorá odráža konkrétne rozhodnutie o súhlase. Vylúčte endpointy súvisiace so súhlasom a stránky centra preferencií z cachovania service workera a zabezpečte, aby bolo vždy možné načítať novú konfiguráciu CMP.
Cache back/forward
Moderné prehliadače držia nedávno navštívené stránky v pamäti, aby ich tlačidlo späť obnovilo okamžite. Ak návštevník otvorí centrum preferencií na jednej stránke, odvolá súhlas a potom stlačí späť, obnovená stránka môže mať stále spustené tagy spred zmeny. Počúvajte udalosť pageshow a skontrolujte jej vlastnosť persisted: keď sa stránka obnoví z tejto cache, znova načítajte uložený stav súhlasu a tagy zastavte alebo spustite tak, aby zodpovedali.
Testovacia rutina
- Načítajte stránku v čistej relácii, odmietnite, potom načítajte druhú stránku a overte, že sa nespúšťajú žiadne sledovacie tagy.
- Zopakujte v druhom čistom prehliadači a overte, že sa banner zobrazí, čo dokazuje, že nebol vycachovaný.
- Skontrolujte hlavičky odpovede, či sa stránky podávajú z cache, a porovnajte HTML s cookie súhlasu a bez nej — malo by byť identické.
- Testujte aspoň z dvoch regiónov po vyčistení cache a znova po jej zahriatí.
- Odvolajte súhlas, použite tlačidlo späť a overte, že tagy sa zastavia.
Kľúčové poznatky
- Cachované HTML by malo byť neutrálne voči súhlasu; nechajte CMP rozhodnúť v prehliadači.
- Nevariujte podľa celej hlavičky cookie; zničí to hit rate.
- Ak sa bannery líšia podľa regiónu, rozhodujte na strane klienta alebo pridajte krajinu do kľúča cache.
- Verzujte súbory CMP, aby dlhá životnosť cache nespomaľovala zmeny konfigurácie.
- Ošetrite service workery a cache back/forward a testujte so zahriatou cache, nielen po vyčistení.