Cachování stránek, CDN a bannery souhlasu: jak nepodávat špatný stav souhlasu

Rychlé stránky, špatný souhlas

Cachování stránek je jedna z nejlepších věcí, které můžete udělat pro rychlost a náklady na hosting. Je to také jeden z nejsnazších způsobů, jak nastavení souhlasu nepozorovaně rozbít. Cache dělá přesně to, co jí řeknete: odpověď jednou uloží a podá ji všem, kdo odpovídají stejnému klíči. Pokud uložená odpověď obsahuje cokoli specifického pro volbu souhlasu nebo polohu jednoho návštěvníka, dostane to i další návštěvník.

Tento průvodce pokrývá vrstvy cachování, které obvykle stojí před webem vydavatele — edge cache CDN, pluginy pro cachování celých stránek, reverzní proxy, service workery a samotný prohlížeč — a jak každé z nich zabránit v podávání špatného prostředí souhlasu.

Základní pravidlo: držte souhlas mimo cachované HTML

Nejbezpečnější architektura vykresluje cachovanou HTML stránku jako neutrální vůči souhlasu. Stránka obsahuje loader CMP a vaše tagy v blokovaném nebo čekajícím stavu, ale bez rozhodnutí o tomto konkrétním návštěvníkovi. CMP pak běží v prohlížeči, přečte uloženou volbu, rozhodne, zda zobrazit banner, a podle toho uvolní tagy.

Problémy začínají, když server činí rozhodnutí o souhlasu v okamžiku vykreslení, například:

Jakmile se taková stránka cachuje, stav prvního návštěvníka se stane stavem všech. Návštěvník, který odmítl sledování, může dostat stránku s již aktivními tagy, nebo nový návštěvník banner nikdy neuvidí, protože cachovaná kopie pochází od někoho, kdo ho už zavřel.

Proč “Vary: Cookie” málokdy pomůže

Učebnicovým řešením pro obsah podle návštěvníka je říct cache, aby variovala podle hlavičky cookie. V praxi návštěvníci nosí mnoho cookies s jedinečnými hodnotami, takže variování podle celé hlavičky cookie obvykle srazí míru zásahů cache téměř na nulu. Některá CDN umožňují sestavit klíč cache z jediné hodnoty cookie, což je schůdné, pokud má vaše cookie souhlasu malý počet možných stavů, ale přidává to složitost a stále to násobí počet cachovaných kopií. Přesun rozhodnutí do prohlížeče je jednodušší a udržuje cache efektivní.

Geografie na edge

Mnoho vydavatelů zobrazuje různé bannery podle regionu: opt-in banner pro EU a Spojené království, oznámení o odhlášení pro americké státy a něco lehčího jinde. Pokud server vybírá variantu podle IP adresy návštěvníka a stránka se cachuje, může evropský čtenář dostat cachovanou americkou stránku, nebo naopak.

Vyhnout se tomu lze třemi vzory:

  1. Geolokace na straně klienta. Nechte CMP určit region v prohlížeči, takže cachované HTML zůstane pro všechny stejné.
  2. Země v klíči cache. Pokud musíte rozhodovat na edge, zahrňte do klíče cache kód země, který poskytuje vaše CDN. Dostanete jednu cachovanou kopii na zemi, což je předvídatelné.
  3. Necachovaná logika na edge. Spusťte regionální rozhodnutí v edge funkci, která do jinak cachované stránky vloží malou necachovanou hodnotu.

Ať zvolíte cokoli, zdokumentujte to. Geografické chyby patří k nejhůře reprodukovatelným, protože se objevují jen u návštěvníků na jednom místě, kteří náhodou dostanou stránku cachovanou někým na jiném.

Cachování samotného skriptu CMP

Dlouhé cachování loaderu CMP je dobré pro výkon, ale má cenu, když se mění konfigurace. Pokud aktualizujete dodavatele, účely nebo text banneru a skript či konfigurační soubor je cachovaný rok, někteří návštěvníci budou dál vidět starou verzi. Zjistěte, jak váš CMP verzuje soubory: měnící se název souboru nebo parametr verze umožňuje agresivní cachování při okamžitém nasazení změn. Ověřte také, že vaše CDN neodstraňuje query řetězce z URL skriptů třetích stran, pokud se na ně CMP spoléhá.

Service workery a offline cache

Weby s vrstvou progresivní webové aplikace často cachují HTML v service workeru. Platí stejné pravidlo: nikdy neukládejte stránku, která odráží konkrétní rozhodnutí o souhlasu. Endpointy související se souhlasem a stránky centra předvoleb vyřaďte z cachování service workeru a zajistěte, aby šlo vždy získat čerstvou konfiguraci CMP.

Cache back/forward

Moderní prohlížeče drží nedávno navštívené stránky v paměti, aby je tlačítko zpět okamžitě obnovilo. Pokud návštěvník otevře na jedné stránce centrum předvoleb, odvolá souhlas a pak stiskne zpět, obnovená stránka může mít stále spuštěné tagy z dřívějška. Poslouchejte událost pageshow a zkontrolujte její vlastnost persisted: když se stránka obnoví z této cache, znovu přečtěte uložený stav souhlasu a tagy podle něj zastavte nebo spusťte.

Testovací rutina

Klíčové poznatky

← Blog Číst vše →