Samskipan á kökukynningu fyrir Next.js, Gatsby og kyrrstæðar síður: Leiðarvísir fyrir forritara

Vandamálið með samþykkisglugga á kyrrstæðum síðum

Nútíma JavaScript-rammaverk eins og Next.js, Gatsby og Nuxt.js hafa breytt því hvernig vefsíður eru byggðar og afhentar. Síður eru for-uppgerðar (pre-rendered) við byggingu eða á netþjóni og síðan vökvaðar (hydrated) í vafranum. Þetta skapar sérstakt vandamál fyrir kökusamþykki: samþykkisborðinn þarf að vera tilbúinn áður en nokkur rekjunar­skrift (tracking script) keyrir, en síðan sjálf getur þegar hafa verið uppgerð og skyndiminjuð á jaðarnetþjónum.

Hefðbundin CMP-kerfi voru hönnuð fyrir netþjóns-uppgerðar PHP eða einfaldar HTML-síður þar sem skjalið hleðst línulega ofan frá og niður. Í rammaheimi með kóðaskiptingu, letihleðslu (lazy loading) og streymandi netþjóns-uppgerð (streaming SSR) falla þessar forsendur. Til að útfæra samþykki rétt í þessu umhverfi þarf að skilja uppgerðarferlið.

Af hverju tímasetning skiptir enn meira máli en þ�� heldur

Á hefðbundinni HTML-síðu er einfalt að setja CMP-skriftu í <head> fyrir aðrar skriptur. Í Next.js App Router eða Gatsby er staðan flóknari:

Kjarnareglan er þessi: samþykki verður að vera skilgreint á skriftustigi, ekki í viðmótshlutum. React-hlutur sem teiknar samþykkisborða er of seinn ef hann verður aðeins gagnvirkur eftir vökvun.

Samþætting með Next.js App Router

Next.js 13+ með App Router kynnti nýja leið til að meðhöndla skriptur. Hér er mælt með eftirfarandi nálgun fyrir samþykkissamþættingu:

Skref 1: Hlaða CMP-skriftu í rótarsniðmáti (root layout)

Notaðu Script-hlut Next.js með beforeInteractive-stefnu í rótarskránni þinni layout.tsx. Þetta segir Next.js að sprauta skriptunni inn í upphaflega HTML-skjalið, áður en vökvun hefst:

beforeInteractive-stefnan er lykilatriði. Sjálfgefna stefnan afterInteractive hleður skriptum eftir vökvun, sem er of seint fyrir samþykki. Með beforeInteractive er CMP-skriptu bætt inn í netþjóns-uppgerða HTML-ið og hún keyrir um leið og síðan hleðst.

Skref 2: Setja sjálfgefið samþykki áður en Google-merki hlaðast

Áður en Google Tag Manager eða gtag.js-búturinn er settur inn skaltu bæta við inline-skriftu sem skilgreinir sjálfgefin samþykkisástand. Þetta tryggir að jafnvel þótt GTM hlaðist áður en CMP-borðinn birtist, virði það sjálfgefin neitunarástand:

Þessi inline-skripta ætti að vera í <head> rótarsniðmátsins, á undan bæði CMP- og GTM-skriptum. Í Next.js geturðu notað venjulegt <script>-merki inni í <head>-hluta sniðmátsins í þessum tilgangi.

Skref 3: Meðhöndla leiðabreytingar

Í einnar síðu forritum (SPA) hleðst CMP-skripta einu sinni, en leiðabreytingar valda ekki fullri endurhleðslu síðu. CMP-kerfið þitt verður að haldast virkt yfir allar viðskiptavina­hliðarleiðsagnir. FlexyConsent sér um þetta sjálfkrafa — þegar það hefur hlaðist helst það virkt yfir allar leiðabreytingar án endurupphafningar.

Samþætting með Next.js Pages Router

Fyrir verkefni sem enn nota Pages Router er nálgunin svipuð en notar _document.tsx í stað rótarsniðmáts. Settu CMP-skriftuna í <Head>-hlut sérsniðins Document-klasa. beforeInteractive-stefnan virkar á sama hátt í Pages Router.

Helsti munurinn er sá að _document.tsx er aðeins uppgert á netþjóni, þannig að öll samþykkisrökfræði þar er tryggilega hluti af upphaflegu HTML-svarinu.

Samþætting á kyrrstæðum Gatsby-síðum

Gatsby býr til fullkomlega kyrrstætt HTML við byggingu. Það er engin netþjóns-uppgerð við beiðni, sem einfaldar sumt en flækir annað:

Byggingartilgangur Gatsby þýðir að hver HTML-skrá á CDN-inu þínu mun innihalda samþykkis-skriftuna. Þetta er í raun kjörin lausn — engin netþjónsrökfræði sem getur brugðist eða skyndiminjast rangt.

Atriði varðandi Nuxt.js

Nuxt.js (byggt á Vue) hefur sín eigin mynstur. Í Nuxt 3 skaltu nota useHead-fallið eða nuxt.config.ts app head stillinguna til að bæta CMP-skriftunni inn á heimsvísu. Nuxt styður body: false valkost (sem setur skriptur í head) og async-eigind fyrir óhindrandi hleðslu.

Fyrir netþjóns-uppgerðarham Nuxt gildir sama regla: CMP-skriptu verður að vera hluti af upphaflegu HTML-svari, ekki sprautað inn af Vue-hluta eftir að hann hefur fest sig.

Að forðast uppsetningarskrið (layout shift)

Samþykkisborðar eru alræmdir fyrir að valda Cumulative Layout Shift (CLS), Core Web Vital-mælikvarða sem hefur áhrif á SEO-einkunnir. Þegar borði skýtur upp kollinum eftir að síðan hefur verið teiknuð ýtir hann efni niður eða leggst óvænt ofan á það.

Aðferðir til að minnka CLS vegna samþykkisborða:

Rammaóháð nálgun FlexyConsent

FlexyConsent var hannað til að virka með hvaða ramma sem er — eða engum ramma — með því að starfa á skriftustigi fremur en á viðmótshlutastigi. Þetta skiptir máli af eftirfarandi ástæðum:

Ráð fyrir forritara: Einfaldasta prófið á því hvort CMP sé rétt samþætt er að opna Network-flipann í vafranum, sía eftir Google-lénum og endurhlaða síðuna. Engar Google-beiðnir ættu að fara af stað áður en skipunin um sjálfgefið samþykki birtist í console. Ef þær gera það hleðst CMP-kerfið of seint.

Ókeypis áskrift FlexyConsent styður ótakmarkaðar síðuskoðanir og virkar með Next.js, Gatsby, Nuxt, Astro, SvelteKit, Remix og hreinu HTML. Samþættingin er sú sama alls staðar: eitt script-merki, rétt staðsett.

← Blogg Lesa allt →