Кеширање страница, CDN-ови и банери сагласности: како избећи сервирање погрешног стања сагласности

Брзе странице, погрешна сагласност

Кеширање страница једна је од најбољих ствари које можете да урадите за брзину и трошкове хостинга. Истовремено је и један од најлакших начина да се подешавање сагласности поквари а да то не приметите. Кеш ради тачно оно што му се каже: одговор сачува једном и сервира га свима који одговарају истом кључу. Ако тај сачувани одговор садржи било шта што је специфично за избор сагласности или локацију једног посетиоца, наредни посетилац то добија такође.

Овај водич обухвата слојеве кеширања који се обично налазе испред сајта издавача — CDN edge кешеве, плагине за кеширање целих страница, reverse proxy-је, service worker-е и сам прегледач — и како да сваки од њих спречите да сервира погрешно искуство сагласности.

Основно правило: држите сагласност ван кешираног HTML-а

Најбезбеднија архитектура рендерује кеширану HTML страницу као неутралну у погледу сагласности. Страница садржи CMP loader и ваше тагове у блокираном стању или стању чекања, али без одлуке о овом конкретном посетиоцу. CMP затим ради у прегледачу, чита сачувани избор, одлучује да ли да прикаже банер и у складу с тим ослобађа тагове.

Проблеми почињу када сервер доноси одлуке о сагласности у тренутку рендеровања, на пример:

Када се таква страница кешира, стање првог посетиоца постаје стање свих. Посетилац који је одбио праћење може да добије страницу са већ активним таговима, или нови посетилац можда никада не види банер јер кеширана копија потиче од некога ко га је већ затворио.

Зашто “Vary: Cookie” ретко решава проблем

Уџбеничко решење за садржај по посетиоцу је да кешевима кажете да варирају по заглављу колачића. У пракси посетиоци носе много колачића са јединственим вредностима, па варирање по целом заглављу колачића обично своди стопу погодака кеша готово на нулу. Неки CDN-ови омогућавају да кључ кеша направите од једне вредности колачића, што је изводљиво ако ваш колачић сагласности има мали број могућих стања, али додаје сложеност и и даље множи број кешираних копија. Премештање одлуке у прегледач је једноставније и одржава кеш ефикасним.

Географија на edge-у

Многи издавачи приказују различите банере по региону: opt-in банер за ЕУ и УК, обавештење о одјави за америчке државе и нешто лакше другде. Ако сервер бира варијанту на основу IP адресе посетиоца и та страница се кешира, европски читалац може да добије кеширану америчку страницу, или обрнуто.

Три обрасца то избегавају:

  1. Геолокација на страни клијента. Нека CMP одреди регион у прегледачу, тако да кеширани HTML остаје исти за све.
  2. Земља у кључу кеша. Ако морате да одлучујете на edge-у, укључите у кључ кеша шифру земље коју пружа ваш CDN. Добијате једну кеширану копију по земљи, што је предвидиво.
  3. Некеширана edge логика. Покрените регионалну одлуку у edge функцији која убацује малу, некеширану вредност у иначе кеширану страницу.

Које год изаберете, документујте га. Географске грешке спадају међу оне које је најтеже репродуковати, јер се јављају само код посетилаца на једном месту који случајно добију страницу коју је кеширао неко на другом.

Кеширање самог CMP скрипта

Дуго кеширање CMP loader-а добро је за перформансе, али има цену када се конфигурација мења. Ако ажурирате добављаче, сврхе или текст банера, а скрипта или конфигурациони фајл су кеширани годину дана, неки посетиоци ће и даље видети стару верзију. Проверите како ваш CMP верзионише фајлове: име фајла или параметар верзије који се мења омогућава агресивно кеширање уз тренутно увођење промена. Такође потврдите да ваш CDN не уклања query стринг из URL-ова скрипти трећих страна ако се CMP на њих ослања.

Service worker-и и офлајн кешеви

Сајтови са слојем прогресивне веб апликације често кеширају HTML у service worker-у. Важи исто правило: никада не чувајте страницу која одражава конкретну одлуку о сагласности. Искључите endpoint-е повезане са сагласношћу и странице центра за подешавања из кеширања service worker-а и постарајте се да се свежа CMP конфигурација увек може преузети.

Back/forward кеш

Савремени прегледачи држе недавно посећене странице у меморији како би дугме за повратак одмах вратило страницу. Ако посетилац отвори центар за подешавања на једној страници, повуче сагласност, па притисне назад, враћена страница можда и даље има тагове који раде од раније. Слушајте догађај pageshow и проверите његово својство persisted: када се страница враћа из овог кеша, поново прочитајте сачувано стање сагласности и зауставите или покрените тагове у складу с тим.

Рутина тестирања

Кључни закључци

← Blog Прочитај све →