Rendering e SEO

Come il Web Rendering Service di Google esegue il tuo JavaScript per costruire la pagina che indicizza — più le opzioni di rendering (CSR, SSR, SSG, hydration, ISR, edge, dynamic) e i loro compromessi SEO.

Prima pubblicazione: 23 giu 2026 · Ultimo aggiornamento: 22 ago 2026 · Advanced
Lingue
1 segnale di evidenza in questa pagina

Il rendering è il passaggio in cui Google esegue il tuo JavaScript in un Chrome headless evergreen — il Web Rendering Service — per costruire il DOM che indicizza. Avviene per praticamente ogni pagina, di solito entro secondi o minuti, quindi il vecchio modello 'due ondate di indicizzazione' è in gran parte superato e non esiste un budget di rendering per pagina. Il renderer è stateless, non interagisce con la pagina e memorizza nella cache in modo aggressivo. La tua opzione di rendering determina il rischio SEO: SSR, static/prerendering e hydration sono sicuri; il rendering completamente lato client è quello rischioso; il rendering dinamico è un workaround.

TL;DR — Google esegue il rendering del tuo JS in un Chromium headless evergreen — il Web Rendering Service — per costruire il DOM che indicizza. Succede praticamente per tutte le pagine, di solito entro secondi-minuti, quindi “due ondate di indicizzazione” è in gran parte superato e non c’è un budget di rendering per pagina. Il WRS è stateless, rifiuta i prompt di autorizzazione, non interagisce con la pagina e memorizza nella cache in modo aggressivo. La tua opzione di rendering determina il tuo rischio SEO: SSR / statico / prerendering / hydration sono a basso rischio; il CSR completo è quello rischioso; il rendering dinamico è un workaround che Google sconsiglia. Per i problemi pratici di JS che questo crea, vedi JavaScript SEO.

Dove si colloca il rendering

Google indica tre fasi per le app JavaScript: “Google processes JavaScript web apps in three main phases: 1. Crawling 2. Rendering 3. Indexing.” (traduzione) «Google elabora le app web JavaScript in tre fasi principali: 1. Crawling, 2. Rendering, 3. Indicizzazione». Evidence for this claim Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Scope: Google Search processing of JavaScript web applications; the phases can overlap operationally. Confidence: high · Verified: Google Search Central: Understand the JavaScript SEO basics Il rendering fa da ponte: il crawling recupera l’HTML grezzo, il rendering esegue JavaScript per costruire il DOM finale e l’indicizzazione legge quel DOM; i nuovi link trovati tornano al crawling. Google spiega: “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome, similar to how your browser renders pages you visit.” (traduzione) «Durante il crawl, Google renderizza la pagina ed esegue il JavaScript trovato con una versione recente di Chrome, in modo simile al browser».

Rendering is the bridge between fetching a URL and indexing its finished DOM; parity, interaction, state, and timing can break that bridge. Fonte: JavaScript SEO

Google crawls a URL, renders its JavaScript to build the DOM, and indexes the result. Four practical failure modes branch from rendering: parity when the rendered DOM differs from expectations, interaction when content requires a scroll or click, state when content relies on cleared cookies or storage, and timing when content is deferred behind slow JavaScript.

© Patrick Stox LLC · CC BY 4.0 ·

Il Web Rendering Service

Google renderizza nel Web Rendering Service (WRS), un Chrome headless evergreen. “While Google Search runs JavaScript with an evergreen version of Chromium…” (traduzione) «La Ricerca Google esegue JavaScript con una versione evergreen di Chromium…». Il WRS segue Chrome corrente, quindi supporta le moderne funzionalità JavaScript e CSS.

Il problema è che il WRS è un browser peculiare, e le sue stranezze causano la maggior parte dei problemi reali:

  • È stateless. Come scrivo nella guida SEO per JavaScript, “Google loads each page stateless like it’s a fresh load.” (traduzione) «Google carica ogni pagina senza stato, come un nuovo caricamento». La documentazione precisa: “Local Storage and Session Storage data are cleared across page loads” (traduzione) «i dati di Local Storage e Session Storage vengono cancellati tra i caricamenti» e “HTTP Cookies are cleared across page loads.” (traduzione) «i cookie HTTP vengono cancellati tra i caricamenti». Non affidare i contenuti a stato persistente lato client.
  • Rifiuta le autorizzazioni. “Expect Googlebot to decline user permission requests.” (traduzione) «Aspettati che Googlebot rifiuti le richieste di autorizzazione». I contenuti dietro richieste di geolocalizzazione, notifiche o fotocamera non vengono renderizzati.
  • Non interagisce. Non scorre, non fa clic e non passa il puntatore; i contenuti caricati solo da questi eventi restano invisibili. È la causa di molti errori di lazy loading e infinite scroll; le soluzioni sono nella pagina SEO per JavaScript.
  • Usa la cache in modo aggressivo. “Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers.” (traduzione) «Googlebot usa intensamente la cache per ridurre richieste di rete e risorse; il WRS può ignorare gli header di cache». Google può quindi eseguire JS o CSS obsoleti. Applica il fingerprint ai nomi, per esempio app.4f2a9c.js, così una modifica impone un nuovo recupero.

Un esperimento del 2026: cinque secondi non sono un muro di esecuzione rigido

Un esperimento WRS di terze parti riportato a luglio 2026 ha testato JavaScript ritardato e attività di rete invece di assumere un timeout di cinque secondi. Il renderer osservato usava un orologio virtuale e completava richieste ritardate che richiedevano circa 6–12 secondi di tempo reale. Il risultato utile è limitato: contraddice la regola di audit comune che qualsiasi cosa avvenga dopo esattamente cinque secondi sia automaticamente invisibile a Google. Non prova che ogni dipendenza ritardata verrà completata, che Google aspetti indefinitamente, o che la consegna lenta lato client sia sicura.

Leggi l’esperimento e la sua metodologia come evidenza di terze parti insieme alla dichiarazione ufficiale di Google che i tempi della coda di rendering non hanno un ritardo fisso pubblicato. In pratica, testa il DOM finale e le risorse richieste. Una risposta API mancante, un requisito di interazione, uno script bloccato o una dipendenza di stato rimangono un vero fallimento di rendering anche quando una “regola dei cinque secondi” basata su cronometro non lo è.

Le “due ondate di indicizzazione” esistono ancora?

Per anni il modello mentale è stato “due ondate di indicizzazione”: Google indicizzava l’HTML raw prima, poi tornava giorni o settimane dopo per renderizzare e indicizzare il contenuto JavaScript. Quel modello è ora in gran parte superato. Martin Splitt ha detto che l’idea delle due ondate ha un ruolo sempre minore, che molte pagine passano attraverso la fase di rendering anche quando non dipendono da JavaScript, e che crawling, rendering e indicizzazione stanno convergendo nel tempo.

In pratica il rendering riguarda quasi ogni pagina ed è normalmente rapido. La documentazione attuale afferma che una pagina sottoposta a crawl “may stay on this queue for a few seconds, but it can take longer than that” (traduzione) «può restare in questa coda per alcuni secondi, ma può richiedere più tempo»: non è pubblicato alcun ritardo o timeout fisso. Evidence for this claim Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Scope: Google's rendering queue for a page that returns a 200 status and is eligible for rendering. The source gives a variable duration, not a fixed timeout or service-level guarantee. Confidence: high · Verified: Google Search Central: rendering-queue duration Supports: A page may remain on the rendering queue for a few seconds or longer. Come dato storico, Martin Splitt e Tom Greenaway indicarono una mediana di circa cinque secondi e un 90° percentile in minuti, non le «settimane» del vecchio timore. Cito il dato nella guida SEO per JavaScript, ma è un dato di conferenza datato, non una metrica corrente ripubblicata da Google; la citazione sulla coda resta l’inquadramento ufficiale.

E non esiste nessun budget di rendering nel modo in cui la gente immagina. Google non tiene traccia di un punteggio per pagina “quanto è costoso renderizzare” che devi conservare. Il rendering è economico alla scala di Google — ottimizza per i tuoi utenti e le prestazioni, non per un fantomatico budget di rendering.

Le opzioni di rendering

“Dove viene costruito l’HTML?” è la domanda che decide il tuo rischio SEO. Il menu completo:

The useful distinction is where initial HTML is produced and what work remains for the browser. Fonte: Rendering

Static generation produces HTML at build time. Server-side rendering produces it per request. Client-side rendering relies on browser JavaScript. Hydration attaches client behavior to server or static HTML. Dynamic rendering varies output by requester and is treated as a workaround.

© Patrick Stox LLC · CC BY 4.0 ·

  • Rendering lato client (CSR). Il server invia un guscio quasi vuoto e il browser o WRS esegue JavaScript per costruire tutto. È “the most problematic one … full client-side rendering where all of the rendering happens in the browser.” (traduzione) «l’opzione più problematica: il rendering completo lato client, in cui tutto avviene nel browser». Può funzionare, ma dipende interamente dal successo del rendering ed è il più lento da indicizzare.
  • Rendering lato server (SSR). Il server costruisce l’HTML completo per ogni richiesta. Il contenuto è nell’HTML grezzo, quindi il rischio per la ricerca è basso.
  • Generazione statica (SSG)/prerendering. L’HTML viene costruito una volta al deploy. È il rischio minimo: contenuto nell’HTML grezzo e caricamento rapido.
  • Hydration (isomorfa/universale). SSR o SSG produce il primo rendering, poi JavaScript lo rende interattivo nel browser. È il modello di molti framework moderni e ha rischio basso, purché mismatch di hydration non cancellino o sostituiscano contenuti.
  • Incremental Static Regeneration (ISR). Pagine statiche rigenerate a intervalli o su richiesta: freschezza maggiore di SSG, utile per cataloghi vasti.
  • Edge rendering. SSR sui nodi edge della CDN: stesso rischio basso di SSR e time-to-first-byte più rapido per un pubblico globale.
  • Streaming SSR. HTML inviato a blocchi appena pronto. Il rischio è basso, ma il contenuto indicizzabile non deve restare confinato in un blocco tardivo o differito.

La conclusione della mia guida SEO per JavaScript è: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines. Gatsby, Next, Nuxt, etc., are all great.” (traduzione) «Qualsiasi configurazione SSR, statica o di prerendering va bene per i motori di ricerca; Gatsby, Next, Nuxt e simili sono ottimi». Il framework conta meno della modalità distribuita: la stessa app Next.js è sicura con SSR/SSG o rischiosa con CSR completo.

Rendering dinamico — un workaround, non una strategia

Il rendering dinamico rileva i bot e serve loro una versione prerenderizzata senza JavaScript, mentre gli utenti ricevono quella lato client. Google è esplicito: “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines,” (traduzione) «il rendering dinamico era un workaround, non una soluzione a lungo termine ai problemi dei contenuti generati con JavaScript nei motori di ricerca», e “Dynamic rendering is a workaround and not a recommended solution, because it creates additional complexities and resource requirements.” (traduzione) «è un workaround non consigliato, perché aggiunge complessità e requisiti di risorse». Evidence for this claim Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Scope: Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Confidence: high · Verified: Google Search Central: Dynamic rendering as a workaround Concordo: non l’ho mai consigliato e sono lieto che Google lo sconsigli. Servire contenuti diversi a bot e utenti è vicino al cloaking; preferisci SSR, statico o hydration.

Una complicazione: Bing suggerisce ancora il rendering dinamico. Microsoft afferma “bingbot is generally able to render JavaScript” (traduzione) «bingbot è generalmente in grado di renderizzare JavaScript», ma osserva che farlo su vasta scala è difficile; perciò “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” (traduzione) «consigliamo il rendering dinamico come valida alternativa per i siti che dipendono fortemente da JavaScript». In pratica, SSR/SSG soddisfa entrambi i motori ed evita il dibattito.

Cosa significa per i tuoi contenuti

Il rendering determina se Google vedrà mai i contenuti JavaScript, ma vederli è solo metà del lavoro. Dopo il rendering, i problemi pratici riguardano link reali <a href>, parità dei singoli campi tra HTML grezzo e renderizzato, ordine delle direttive robots, contenuti lazy, infinite scroll e risposte soft not-found. La pagina SEO per JavaScript tratta questi aspetti e il flusso di test con HTML renderizzato, screenshot e console di URL Inspection.

Questa è la fase di rendering del percorso di ricerca. Per le fasi adiacenti, vedi crawling (come vengono recuperate le pagine) e indexing (cosa succede alla pagina renderizzata successivamente), oppure l’hub Come funziona la Ricerca Google per l’intero percorso.

Una regola di audit vale la pena di tenere a mente qui: renderizzato è uno stato, non un vincitore universale. Per il contenuto del corpo e i link crawlable, il DOM renderizzato mostra cosa il JavaScript riuscito ha aggiunto o rimosso. Per titoli e descrizioni, mostra input aggiuntivi, mentre Google può ancora generare un title link o uno snippet da altre fonti. Per le direttive robots, un noindex grezzo può impedire il rendering, quindi la rimozione tramite JavaScript è asimmetrica. Per il canonical, Google consiglia di usare una sola fonte o un valore impostato tramite JavaScript piuttosto che modificare un valore esistente. E JavaScript non può cambiare lo stato della risposta HTTP già ricevuta. Tieni separate queste colonne nelle prove e usa l’attuale guida JavaScript SEO di Google per il comportamento specifico del campo.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.