Sīkdatņu piekrišana Next.js, Gatsby un statiskajās vietnēs: izstrādātāja integrācijas ceļvedis

Statisko vietņu piekrišanas problēma

Mūsdienīgi JavaScript ietvari, piemēram, Next.js, Gatsby un Nuxt.js, ir ieviesuši paradigmas maiņu tajā, kā tīmekļa lapas tiek veidotas un piegādātas. Lapas tiek iepriekš renderētas būvēšanas laikā vai serverī, pēc tam klienta pusē tiek veiktas hidratācija. Tas rada unikālu izaicinājumu sīkdatņu piekrišanai: piekrišanas joslai ir jābūt gatavai pirms tiek izpildīti jebkādi izsekošanas skripti, taču pati lapa jau var būt renderēta un kešota uz malas serveriem.

Tradicionālie CMP tika izstrādāti servera renderētām PHP vai vienkāršām HTML lapām, kur dokuments ielādējas lineāri no augšas uz leju. Ietvaru pasaulē ar koda sadalīšanu, slinko ielādi un straumējošu servera puses renderēšanu šie pieņēmumi vairs nestrādā. Lai šādā vidē pareizi ieviestu piekrišanu, ir jāsaprot renderēšanas cauruļvads.

Kāpēc laika moments ir svarīgāks, nekā šķiet

Standarta HTML lapā CMP skripta ievietošana <head> pirms citiem skriptiem ir vienkārša. Next.js App Router vai Gatsby gadījumā situācija ir sarežģītāka:

Pamatprincips ir šāds: piekrišana ir jānosaka skripta līmenī, nevis komponentes līmenī. React komponents, kas renderē piekrišanas joslu, ir par vēlu, ja tas kļūst interaktīvs tikai pēc hidratācijas.

Next.js App Router integrācija

Next.js 13+ ar App Router ieviesa jaunu veidu, kā apstrādāt skriptus. Šeit ir ieteicamā pieeja piekrišanas integrācijai:

1. solis: ielādējiet CMP skriptu saknes izkārtojumā

Izmantojiet Next.js Script komponenti ar beforeInteractive stratēģiju jūsu saknes layout.tsx. Tas norāda Next.js injicēt skriptu sākotnējā HTML dokumentā pirms hidratācijas sākuma:

beforeInteractive stratēģija ir kritiski svarīga. Noklusējuma afterInteractive stratēģija ielādē skriptus pēc hidratācijas, kas piekrišanai ir par vēlu. Ar beforeInteractive CMP skripts tiek iekļauts servera renderētajā HTML un izpildās lapas ielādes laikā.

2. solis: iestatiet noklusējuma piekrišanu pirms Google tagiem

Pirms jūsu Google Tag Manager vai gtag.js fragmenta iekļaujiet inline skriptu, kas iestata noklusējuma piekrišanas stāvokļus. Tas nodrošina, ka pat ja GTM ielādējas pirms parādās CMP josla, tas ievēro noraidītos noklusējumus:

Šim inline skriptam jāatrodas jūsu saknes izkārtojuma <head>, pirms CMP un GTM skriptiem. Next.js gadījumā šim nolūkam varat izmantot parastu <script> tagu <head> elementā.

3. solis: apstrādājiet maršrutu maiņas

Vientekmes lietotnes navigācijā CMP skripts ielādējas vienreiz, bet maršrutu maiņas neizraisa pilnu lapas pārlādi. Jūsu CMP ir jāsaglabājas visās klienta puses navigācijās. FlexyConsent to apstrādā automātiski — tiklīdz tas ir ielādēts, tas paliek aktīvs visās maršrutu maiņās bez atkārtotas inicializācijas.

Next.js Pages Router integrācija

Projektiem, kas joprojām izmanto Pages Router, pieeja ir līdzīga, taču izmanto _document.tsx saknes izkārtojuma vietā. Novietojiet CMP skriptu savas pielāgotās Document klases <Head> komponentē. beforeInteractive stratēģija Pages Router darbojas tāpat.

Galvenā atšķirība ir tā, ka _document.tsx renderējas tikai serverī, tāpēc jebkura piekrišanas loģika šeit noteikti būs sākotnējā HTML atbildē.

Gatsby statisko vietņu integrācija

Gatsby būvēšanas laikā ģenerē pilnībā statisku HTML. Pieprasījuma brīdī nav servera puses renderēšanas, kas dažus aspektus vienkāršo, bet citus sarežģī:

Gatsby būvēšanas laika pieeja nozīmē, ka katrs HTML fails jūsu CDN saturēs piekrišanas skriptu. Patiesībā tas ir ideāli — nav servera loģikas, kas varētu kļūdīties vai tikt nepareizi kešota.

Nuxt.js īpatnības

Nuxt.js (balstīts uz Vue) izmanto savus rakstus. Nuxt 3 gadījumā izmantojiet useHead composable vai nuxt.config.ts lietotnes head konfigurāciju, lai pievienotu CMP skriptu globāli. Nuxt atbalsta body: false opciju (kas novieto skriptus head daļā) un async atribūtu neblokējošai ielādei.

Nuxt servera puses renderēšanas režīmā spēkā ir tas pats princips: CMP skriptam ir jābūt sākotnējā HTML atbildē, nevis dinamiski injicētam ar Vue komponenti pēc montēšanas.

Izvairīšanās no izkārtojuma nobīdes

Piekrišanas joslas ir bēdīgi slavenas ar to, ka izraisa Cumulative Layout Shift (CLS), Core Web Vital rādītāju, kas ietekmē SEO pozīcijas. Kad josla parādās pēc lapas renderēšanas, tā pabīda saturu uz leju vai negaidīti to pārklāj.

Stratēģijas, kā samazināt CLS no piekrišanas joslām:

FlexyConsent ietvaru-neatkarīgā pieeja

FlexyConsent ir izstrādāts tā, lai darbotos ar jebkuru ietvaru — vai bez jebkāda ietvara — darbojoties skripta līmenī, nevis komponentes līmenī. Lūk, kāpēc tas ir svarīgi:

Izstrādātāja padoms: Vienkāršākais tests pareizai CMP integrācijai ir atvērt pārlūka Network cilni, filtrēt pēc Google domēniem un pārlādēt lapu. Pirms konsolē parādās piekrišanas noklusējuma komanda, nedrīkst būt neviena Google pieprasījuma. Ja tādi ir, jūsu CMP ielādējas par vēlu.

FlexyConsent bezmaksas plāns atbalsta neierobežotu lapu skatījumu skaitu un darbojas ar Next.js, Gatsby, Nuxt, Astro, SvelteKit, Remix un tīru HTML. Integrācija visur ir vienāda: viens skripta tags, pareizi novietots.

← Blogs Lasīt visu →