Бет кэші, CDN және келісім баннерлері: қате келісім күйін көрсетуден қалай аулақ болу керек
Жылдам беттер, қате келісім
Бет кэштеу — жылдамдық пен хостинг шығындары үшін істей алатын ең жақсы нәрселердің бірі. Сонымен бірге ол келісім параметрлерін байқатпай бұзудың ең оңай жолдарының бірі. Кэш дәл өзіне айтылғанды орындайды: жауапты бір рет сақтайды және бірдей кілтке сәйкес келетін барлығына береді. Сақталған жауапта бір келушінің келісім таңдауына немесе орналасқан жеріне тән бірдеңе болса, келесі келуші де оны алады.
Бұл нұсқаулық баспагер сайтының алдында әдетте тұратын кэштеу қабаттарын — CDN edge кэштері, толық бет кэштеу плагиндері, reverse proxy-лер, service worker-лер және браузердің өзі — және олардың әрқайсысын қате келісім тәжірибесін көрсетуден қалай сақтау керегін қамтиды.
Негізгі ереже: келісімді кэштелген HTML-ден тыс ұстаңыз
Ең қауіпсіз архитектура кэштелген HTML бетті келісім тұрғысынан бейтарап етіп құрады. Бетте CMP жүктеушісі және тегтеріңіз бұғатталған немесе күту күйінде болады, бірақ осы келуші туралы ешқандай шешім болмайды. Содан кейін CMP браузерде жұмыс істейді, сақталған таңдауды оқиды, баннерді көрсету-көрсетпеуді шешеді және тегтерді соған сәйкес іске қосады.
Мәселелер сервер келісім бойынша шешімдерді рендерлеу кезінде қабылдағанда басталады, мысалы:
- тек келісім cookie файлы болғанда ғана жарнама немесе аналитика тегтерін шығаратын тақырып немесе плагин;
- таңдау жасаған келушілер үшін баннер разметкасын тастап кететін сервер жағындағы код;
- келушінің келісім күйін inline скрипт айнымалысына енгізетін үлгілер.
Бұл бет кэштелгеннен кейін бірінші келушінің күйі барлығының күйіне айналады. Бақылаудан бас тартқан келуші тегтері әлдеқашан белсенді бетті алуы мүмкін, немесе жаңа келуші баннерді мүлдем көрмеуі мүмкін, өйткені кэштегі көшірме оны жауып үлгерген адамнан алынған.
“Vary: Cookie” неге сирек шешім болады
Келушіге тән контент үшін оқулықтағы шешім — кэштерге cookie тақырыбы бойынша өзгеруді айту. Іс жүзінде келушілер бірегей мәндері бар көптеген cookie алып жүреді, сондықтан бүкіл cookie тақырыбы бойынша өзгеру әдетте кэш hit деңгейін нөлге жуық түсіреді. Кейбір CDN-дер кэш кілтін оның орнына бір cookie мәнінен құруға мүмкіндік береді; келісім cookie файлының ықтимал күйлері аз болса, бұл жұмыс істейді, бірақ күрделілік қосады және кэштелген көшірмелер санын бәрібір көбейтеді. Шешімді браузерге ауыстыру қарапайымырақ және кэшті тиімді ұстайды.
Edge-тегі география
Көптеген баспагерлер аймаққа қарай әртүрлі баннерлер көрсетеді: ЕО мен Ұлыбритания үшін opt-in баннері, АҚШ штаттары үшін opt-out хабарламасы, ал басқа жерлерде жеңілірек нәрсе. Сервер нұсқаны келушінің IP мекенжайынан таңдап, бұл бет кэштелсе, еуропалық оқырман кэштелген АҚШ бетін алуы мүмкін немесе керісінше.
Мұны үш үлгі болдырмайды:
- Клиент жағындағы геолокация. CMP аймақты браузерде анықтасын, сонда кэштелген HTML барлығы үшін бірдей қалады.
- Кэш кілтіндегі ел. Шешімді edge-те қабылдауыңыз керек болса, CDN ұсынатын ел кодын кэш кілтіне қосыңыз. Әр ел үшін бір кэштелген көшірме аласыз, бұл болжауға болатын жағдай.
- Кэштелмейтін edge логикасы. Аймақтық шешімді edge функциясында орындаңыз, ол әйтпесе кэштелген бетке шағын, кэштелмейтін мән енгізеді.
Қайсысын таңдасаңыз да, құжаттаңыз. Гео қателерін қайталау ең қиын қателердің қатарында, өйткені олар тек бір жердегі келушілерде, басқа жердегі біреу кэштеген бетті алған кезде ғана пайда болады.
CMP скриптінің өзін кэштеу
CMP жүктеушісін ұзақ кэштеу өнімділік үшін жақсы, бірақ конфигурация өзгергенде оның бағасы бар. Вендорларды, мақсаттарды немесе баннер мәтінін жаңартсаңыз және скрипт не конфигурация файлы бір жылға кэштелген болса, кейбір келушілер ескі нұсқаны көре береді. CMP файлдарын қалай нұсқалайтынын тексеріңіз: өзгеретін файл атауы немесе нұсқа параметрі өзгерістерді бірден шығарып, кэшті агрессивті пайдалануға мүмкіндік береді. Сондай-ақ CMP оларға сүйенсе, өз CDN-іңіз үшінші тарап скрипт URL-дерінен query жолдарын алып тастамайтынын растаңыз.
Service worker-лер және офлайн кэштер
Progressive web app қабаты бар сайттар HTML-ді жиі service worker-де кэштейді. Дәл сол ереже қолданылады: нақты келісім шешімін көрсететін бетті ешқашан сақтамаңыз. Келісімге қатысты endpoint-терді және параметрлер орталығы беттерін service worker кэшінен шығарып тастаңыз және жаңа CMP конфигурациясын әрдайым алуға болатынына көз жеткізіңіз.
Артқа/алға кэш (back/forward cache)
Заманауи браузерлер жақында көрілген беттерді жадта сақтайды, сонда “артқа” батырмасы оларды бірден қалпына келтіреді. Келуші бір бетте параметрлер орталығын ашып, келісімін кері қайтарса, содан кейін артқа басса, қалпына келтірілген бетте тегтер бұрынғы күйден әлі жұмыс істеп тұруы мүмкін. pageshow оқиғасын тыңдап, оның persisted қасиетін тексеріңіз: бет осы кэштен қалпына келтірілгенде, сақталған келісім күйін қайта оқып, тегтерді соған сай тоқтатыңыз немесе іске қосыңыз.
Тестілеу тәртібі
- Бетті таза сессияда жүктеңіз, бас тартыңыз, содан кейін екінші бетті жүктеп, ешқандай бақылау тегі іске қосылмайтынын растаңыз.
- Екінші таза браузермен қайталап, баннердің пайда болатынын растаңыз, бұл оның кэш салдарынан жоғалмағанын дәлелдейді.
- Беттер кэштен берілетінін көру үшін жауап тақырыптарын тексеріңіз және HTML-ді келісім cookie файлымен және онсыз салыстырыңыз — бірдей болуы керек.
- Кэшті тазалағаннан кейін кемінде екі аймақтан, содан кейін кэш қызғаннан кейін қайта сынаңыз.
- Келісімді кері қайтарып, артқа батырмасын қолданыңыз және тегтер тоқтайтынын растаңыз.
Негізгі тұжырымдар
- Кэштелген HTML келісім тұрғысынан бейтарап болуы керек; шешімді CMP браузерде қабылдасын.
- Бүкіл cookie тақырыбы бойынша өзгеруден аулақ болыңыз; ол hit деңгейін жояды.
- Баннерлер аймаққа қарай өзгеше болса, клиент жағында шешіңіз немесе елді кэш кілтіне қосыңыз.
- Ұзақ кэш мерзімі конфигурация өзгерістерін кешіктірмеуі үшін CMP файлдарын нұсқалаңыз.
- Service worker-лер мен артқа/алға кэшті ескеріңіз, тек тазалаудан кейін емес, кэш қызған кезде де сынаңыз.