Next.js, Gatsby va Statik Saytlar uchun Cookie Rozilik: Dasturchi Integratsiya Qo'llanmasi

Statik Sayt Rozilik Muammosi

Next.js, Gatsby va Nuxt.js kabi zamonaviy JavaScript freymvorklari veb-sahifalarni yaratish va yetkazish usulida paradigma o'zgarishini joriy qildi. Sahifalar build vaqtida yoki serverda oldindan renderlanadi, so'ngra klientda gidratsiyalanadi. Bu cookie rozilik uchun noyob muammo yaratadi: rozilik banneri har qanday kuzatuv skriptlari bajarilishidan oldin tayyor bo'lishi kerak, lekin sahifaning o'zi allaqachon renderlangan va edge-da keshlangan bo'lishi mumkin.

An'anaviy CMP-lar server tomonidan renderlangan PHP yoki oddiy HTML sahifalari uchun mo'ljallangan bo'lib, ularda hujjat yuqoridan pastga chiziqli ravishda yuklanadi. Kod bo'lish, dangasa yuklash va striming server tomonidan renderlash bilan freymvork dunyosida taxminlar buziladi. Ushbu muhitlarda rozilikni to'g'ri olish renderlash quvurini tushunishni talab qiladi.

Vaqt Siz O'ylaganingizdan Ko'ra Muhimroq

Standart HTML sahifasida CMP skriptini boshqa skriptlardan oldin <head> ichiga joylashtirish oddiy. Next.js App Router yoki Gatsby-da vaziyat murakkabroq:

Asosiy tamoyil shunday: rozilik skript darajasida o'rnatilishi kerak, komponent darajasida emas. Rozilik bannerini renderlaydigan React komponenti, agar u faqat gidratsiyadan keyin interaktiv bo'lsa, juda kech.

Next.js App Router Integratsiyasi

Next.js 13+ App Router bilan skriptlarni boshqarishning yangi usulini joriy qildi. Rozilik integratsiyasi uchun tavsiya etilgan yondashuv:

1-qadam: Root Layout-da CMP Skriptini Yuklang

Root layout.tsx faylingizda beforeInteractive strategiyasi bilan Next.js Script komponentidan foydalaning. Bu Next.js-ga skriptni boshlang'ich HTML hujjatiga gidratsiya boshlanishidan oldin kiritishni aytadi:

beforeInteractive strategiyasi muhim. Standart afterInteractive strategiyasi skriptlarni gidratsiyadan keyin yuklaydi, bu rozilik uchun juda kech. beforeInteractive bilan CMP skripti serverdan renderlangan HTML-ga kiritiladi va sahifa yuklanayotganda bajariladi.

2-qadam: Google Teglaridan Oldin Standart Rozilikni O'rnating

Google Tag Manager yoki gtag.js snippetingizdan oldin standart rozilik holatlarini o'rnatadigan inline skriptni qo'shing. Bu GTM CMP banneri paydo bo'lishidan oldin yuklansa ham, rad etilgan standartlarga rioya qilishini ta'minlaydi:

Ushbu inline skript root layout-ingizning <head> qismida CMP va GTM skriptlaridan oldin joylashtirilishi kerak. Next.js-da siz bu maqsadda layout-ingizning <head> elementida oddiy <script> tegidan foydalanishingiz mumkin.

3-qadam: Marshrut O'zgarishlarini Boshqaring

Bitta sahifali ilova navigatsiyasida CMP skripti bir marta yuklanadi, lekin marshrut o'zgarishlari to'liq sahifa qayta yuklashni ishga tushirmaydi. Sizning CMP klient tomonidagi navigatsiyalarda saqlanishi kerak. FlexyConsent buni avtomatik ravishda boshqaradi — bir marta yuklangandan so'ng, u qayta ishga tushirishsiz barcha marshrut o'zgarishlarida faol bo'lib qoladi.

Next.js Pages Router Integratsiyasi

Pages Router-dan hali ham foydalanadigan loyihalar uchun yondashuv o'xshash, lekin root layout o'rniga _document.tsx ishlatadi. CMP skriptini maxsus Document klassingizning <Head> komponentiga joylashtiring. beforeInteractive strategiyasi Pages Router-da ham xuddi shunday ishlaydi.

Asosiy farq shundaki, _document.tsx faqat serverda renderlanadi, shuning uchun bu yerdagi har qanday rozilik mantiqi boshlang'ich HTML yuklamasida bo'lishi kafolatlanadi.

Gatsby Statik Sayt Integratsiyasi

Gatsby build vaqtida to'liq statik HTML yaratadi. So'rov vaqtida server tomonidan renderlash yo'q, bu ba'zi jihatlarni soddalashtiradi, lekin boshqalarini murakkablashtiradi:

Gatsby-ning build vaqtidagi yondashuvi CDN-ingizdagi har bir HTML faylda rozilik skripti bo'lishini anglatadi. Bu aslida ideal — muvaffaqiyatsiz bo'ladigan yoki noto'g'ri keshlanadigan server mantiqi yo'q.

Nuxt.js Mulohazalari

Nuxt.js (Vue-ga asoslangan) o'zining shablonlariga ega. Nuxt 3-da CMP skriptini global ravishda qo'shish uchun useHead composable yoki nuxt.config.ts app head konfiguratsiyasidan foydalaning. Nuxt body: false opsiyasini (skriptlarni head-ga joylashtiradigan) va blokirovka qilmaydigan yuklash uchun async atributini qo'llab-quvvatlaydi.

Nuxt-ning server tomonidan renderlash rejimi uchun xuddi shu tamoyil qo'llaniladi: CMP skripti boshlang'ich HTML javobida bo'lishi kerak, mount-dan keyin Vue komponenti tomonidan dinamik ravishda kiritilmasligi kerak.

Layout Siljishidan Qochish

Rozilik bannerlari SEO reytinglariga ta'sir qiladigan Core Web Vital bo'lgan Cumulative Layout Shift (CLS) ga sabab bo'lishi bilan mashhur. Sahifa renderlangandan keyin banner paydo bo'lganda, u kontentni pastga suradi yoki kutilmaganda qoplaydi.

Rozilik bannerlaridan CLS-ni kamaytirish strategiyalari:

FlexyConsent-ning Freymvorkdan Mustaqil Yondashuvi

FlexyConsent istalgan freymvork bilan — yoki umuman freymvorksiz — ishlash uchun mo'ljallangan bo'lib, komponent darajasida emas, balki skript darajasida ishlaydi. Bu nima uchun muhim:

Dasturchi maslahati: To'g'ri CMP integratsiyasining eng oddiy testi brauzeringizning Network tabini ochish, Google domenlari bo'yicha filtrlash va sahifani qayta yuklashdir. Konsolda rozilik standart buyrug'i paydo bo'lishidan oldin hech qanday Google so'rovi ishga tushmasligi kerak. Agar ular ishga tushsa, CMP-ingiz juda kech yuklanmoqda.

FlexyConsent-ning bepul rejasi cheksiz sahifa ko'rishlarni qo'llab-quvvatlaydi va Next.js, Gatsby, Nuxt, Astro, SvelteKit, Remix va oddiy HTML bilan ishlaydi. Integratsiya ularning barchasida bir xil: bitta skript tegi, to'g'ri joylashtirilgan.

← Blog Hammasini o'qish →