Next.js, Gatsby və Statik Saytlar üçün Kuki Razılığı: Tərtibatçının İnteqrasiya Bələdçisi

Statik Sayt Razılıq Problemi

Next.js, Gatsby və Nuxt.js kimi müasir JavaScript çərçivələri veb səhifələrin necə qurulduğu və təqdim edildiyi sahəsində paradiqma dəyişikliyi yaratdı. Səhifələr qurma zamanı və ya serverdə əvvəlcədən render edilir, sonra isə müştəri tərəfində hidratlaşdırılır. Bu, kuki razılığı üçün unikal bir problem yaradır: razılıq bannerı hər hansı izləmə skriptləri icra olunmadan əvvəl hazır olmalıdır, lakin səhifənin özü artıq render edilmiş və kənar serverdə keşlənmiş ola bilər.

Ənənəvi CMP-lər sənədin yuxarıdan aşağıya doğru xətti şəkildə yükləndiyi server tərəfindən render edilən PHP və ya sadə HTML səhifələr üçün hazırlanmışdı. Kod bölünməsi, tənbəl yükləmə və axın edən server tərəfi renderinqi olan çərçivə dünyasında bu fərziyyələr pozulur. Bu mühitlərdə razılığı düzgün əldə etmək render boru kəmərini anlamağı tələb edir.

Niyə Zamanlama Düşündüyünüzdən Daha Vacibdir

Standart HTML səhifəsində CMP skriptini digər skriptlərdən əvvəl <head> bölməsinə yerləşdirmək sadədir. Next.js App Router və ya Gatsby-də vəziyyət daha mürəkkəbdir:

Əsas prinsip budur: razılıq komponent səviyyəsində deyil, skript səviyyəsində müəyyən edilməlidir. Razılıq bannerı göstərən React komponenti, yalnız hidratasiyadan sonra interaktiv olursa, çox gecdir.

Next.js App Router İnteqrasiyası

App Router ilə Next.js 13+ skriptlərlə işləmək üçün yeni yol təqdim etdi. Razılıq inteqrasiyası üçün tövsiyə olunan yanaşma budur:

Addım 1: CMP Skriptini Kök Layoutda Yükləyin

Kök layout.tsx faylınızda beforeInteractive strategiyası ilə Next.js Script komponentindən istifadə edin. Bu, Next.js-ə skripti ilkin HTML sənədinə hidratasiya başlamazdan əvvəl daxil etməyi bildirir:

beforeInteractive strategiyası vacibdir. Defolt afterInteractive strategiyası skriptləri hidratasiyadan sonra yükləyir ki, bu da razılıq üçün çox gecdir. beforeInteractive ilə CMP skripti server tərəfindən render edilmiş HTML-ə daxil edilir və səhifə yüklənərkən icra olunur.

Addım 2: Google Etiketlərindən Əvvəl Defolt Razılığı Təyin Edin

Google Tag Manager və ya gtag.js snippet-inizdən əvvəl defolt razılıq vəziyyətlərini təyin edən daxili skript daxil edin. Bu, GTM CMP bannerı görünmədən əvvəl yüklənsə belə, rədd edilmiş defoltlara hörmət etməsini təmin edir:

Bu daxili skript kök layoutunuzun <head> bölməsində, CMP və GTM skriptlərindən əvvəl yerləşdirilməlidir. Next.js-də bu məqsəd üçün layoutunuzun <head> elementinin içərisində adi <script> etiketindən istifadə edə bilərsiniz.

Addım 3: Marşrut Dəyişikliklərini İdarə Edin

Tək səhifəli tətbiq naviqasiyasında CMP skripti bir dəfə yüklənir, lakin marşrut dəyişiklikləri tam səhifə yenilənməsini işə salmır. CMP-niz müştəri tərəfi naviqasiyaları boyunca davam etməlidir. FlexyConsent bunu avtomatik olaraq idarə edir — bir dəfə yükləndikdən sonra yenidən başlatma olmadan bütün marşrut dəyişikliklərində aktiv qalır.

Next.js Pages Router İnteqrasiyası

Hələ də Pages Router istifadə edən layihələr üçün yanaşma oxşardır, lakin kök layout əvəzinə _document.tsx istifadə edir. CMP skriptini xüsusi Document sinifinizdəki <Head> komponentinə yerləşdirin. beforeInteractive strategiyası Pages Router-da eyni şəkildə işləyir.

Əsas fərq ondadır ki, _document.tsx yalnız serverdə render edilir, buna görə də buradakı hər hansı razılıq məntiqi ilkin HTML yükündə olacağına zəmanət verilir.

Gatsby Statik Sayt İnteqrasiyası

Gatsby qurma zamanı tam statik HTML yaradır. Sorğu zamanı server tərəfi renderinqi yoxdur ki, bu da bəzi aspektləri sadələşdirir, lakin digərlərini çətinləşdirir:

Gatsby-nin qurma zamanı yanaşması o deməkdir ki, CDN-nizdəki hər HTML faylı razılıq skriptini daxil edəcək. Bu əslində idealdır — uğursuz ola biləcək və ya düzgün keşlənməyəcək server məntiqi yoxdur.

Nuxt.js Mülahizələri

Nuxt.js-in (Vue əsaslı) öz nümunələri var. Nuxt 3-də CMP skriptini qlobal olaraq əlavə etmək üçün useHead composable və ya nuxt.config.ts tətbiq başlıq konfiqurasiyasından istifadə edin. Nuxt body: false seçimini (skriptləri başlığa yerləşdirən) və bloklamayan yükləmə üçün async atributunu dəstəkləyir.

Nuxt-un server tərəfi renderinq rejimi üçün eyni prinsip tətbiq olunur: CMP skripti ilkin HTML cavabında olmalıdır, montajdan sonra Vue komponenti tərəfindən dinamik olaraq daxil edilməməlidir.

Layout Sürüşməsinin Qarşısını Almaq

Razılıq bannerləri SEO sıralamasına təsir edən Core Web Vital olan Kumulyativ Layout Sürüşməsinə (CLS) səbəb olmaqla məşhurdur. Banner səhifə render edildikdən sonra görünəndə məzmunu aşağı itələyir və ya gözlənilmədən üst-üstə düşür.

Razılıq bannerlərindən CLS-ni minimuma endirmək üçün strategiyalar:

FlexyConsent-in Çərçivədən Asılı Olmayan Yanaşması

FlexyConsent komponent səviyyəsində deyil, skript səviyyəsində işləyərək istənilən çərçivə ilə — və ya heç bir çərçivə olmadan — işləmək üçün hazırlanmışdır. Bunun niyə vacib olduğu budur:

Tərtibatçı məsləhəti: Düzgün CMP inteqrasiyası üçün ən sadə test brauzerinizin Şəbəkə panelini açmaq, Google domenlərinə görə filtrləmək və səhifəni yenidən yükləməkdir. Konsolda defolt razılıq əmri görünmədən əvvəl heç bir Google sorğusu işə düşməməlidir. Əgər düşürsə, CMP-niz çox gec yüklənir.

FlexyConsent-in pulsuz planı limitsiz səhifə baxışlarını dəstəkləyir və Next.js, Gatsby, Nuxt, Astro, SvelteKit, Remix və sadə HTML ilə işləyir. İnteqrasiya hamısında eynidir: bir skript etiketi, düzgün yerləşdirilmiş.

← Bloq Hamısını Oxu →