Percorso critico di rendering
La pipeline del browser dai byte ai pixel visibili — DOM, CSSOM, albero di rendering, layout e disegno — il motivo per cui CSS e JavaScript possono bloccare il rendering, le tre leve di ottimizzazione e gli effetti su FCP, LCP e sul rendering di Googlebot. L'hub delle risorse che bloccano il rendering.
Il percorso critico di rendering (CRP) è il lavoro ordinato per dipendenze che il browser esegue prima di poter disegnare il primo pixel: analizza l'HTML nel DOM, il CSS nel CSSOM, li combina nell'albero di rendering, calcola il layout e disegna. È un modello mentale, non una sequenza rigida. Il CSS applicabile blocca il disegno finché il CSSOM non è pronto; JavaScript sincrono blocca l'analisi del DOM. Ottimizzare il CRP significa ridurre il numero di risorse critiche, la lunghezza del percorso e i byte critici. FCP segue il completamento del CRP come tappa, non come diagnosi completa, e un CRP lungo può ritardare LCP. Anche Googlebot usa un Chromium headless senza stato e con cache fredda, quindi le risorse bloccanti ne rallentano il rendering, senza che ciò dimostri un'equivalenza esatta o un effetto sul ranking. CSS e JS critici non vanno bloccati in robots.txt.
In breve — Il percorso critico di rendering è l’insieme di passaggi che il browser deve completare prima di mostrare qualcosa: leggere HTML e CSS, stabilire posizione e dimensioni degli elementi e disegnare i pixel. Alcuni file, come fogli di stile e script, devono caricarsi prima e «bloccano il rendering». È ciò a cui si riferisce PageSpeed Insights con «Elimina le risorse che bloccano il rendering».
Che cos’è il percorso critico di rendering
Quando apri una pagina, il browser non mostra direttamente il file scaricato. Prima deve costruire la pagina:
- Legge l’HTML e crea il DOM, la mappa degli elementi.
- Legge il CSS e crea il CSSOM, la mappa del loro aspetto.
- Combina le due strutture nell’albero di rendering, limitato agli elementi visibili.
- Calcola il layout, cioè posizione e dimensioni.
- Esegue il disegno, tracciando i pixel sullo schermo.
Il percorso critico di rendering è la parte di questo lavoro da completare prima del primo pixel. Più è rapido, prima appare la pagina.
Che cosa significa «bloccare il rendering»
Alcuni file frenano il processo:
- Il CSS blocca il disegno. Il browser attende i fogli di stile bloccanti per evitare di mostrare una pagina senza stile.
- JavaScript blocca la lettura dell’HTML. Davanti a un normale tag
<script>, interrompe la costruzione, esegue lo script e poi riprende.
Pochi fogli di stile e script pesanti nel <head> possono quindi ritardare l’intera
pagina, anche quando il resto è piccolo.
Perché è importante
Il primo contenuto disegnato è misurato da First Contentful Paint (FCP); il più grande elemento visibile da Largest Contentful Paint (LCP). LCP è un Core Web Vital di Google e può contribuire al ranking. Un percorso lento peggiora quindi esperienza e ricerca.
Per accorciarlo, carica meno risorse in anticipo, rendile più piccole e impedisci a script e stili non essenziali di bloccare il primo disegno. La scheda Avanzato spiega pipeline, blocchi, leve e Googlebot.
In breve — Il CRP porta dai byte al primo disegno: HTML → DOM, CSS → CSSOM, DOM + CSSOM → albero di rendering → layout → disegno. Il CSS blocca il rendering finché il CSSOM non è pronto; JavaScript sincrono blocca la costruzione del DOM. Riduci risorse critiche, lunghezza del percorso critico e byte critici. FCP segue il completamento come tappa, non come diagnosi; un ampio intervallo TTFB→FCP segnala possibili risorse bloccanti e un CRP lungo può ritardare LCP. WRS di Googlebot usa Chromium headless senza stato e con cache fredda: le risorse bloccanti lo rallentano e CSS/JS critici non vanno esclusi in
robots.txt. Leve: CSS critico inline, CSS non critico asincrono, JS condeferepreloadsoltanto per risorse confermate nel percorso.
La pipeline in cinque passaggi, dai byte ai pixel
Ogni pagina segue questo modello in ordine di dipendenza, ma non come cinque fasi rigide eseguite una sola volta. Il browser analizza e mostra progressivamente l’HTML, sovrappone attività e ripete parti del lavoro quando arrivano HTML, CSS o modifiche al DOM. È un modello per ragionare sulle dipendenze.
1. HTML → DOM. web.dev descrive: «Bytes → characters → tokens → nodes → object model». Il browser traduce i byte in caratteri, token, oggetti e infine in un albero, il Document Object Model usato per le elaborazioni successive.
2. CSS → CSSOM. I byte CSS diventano caratteri, token, nodi e l’albero CSS Object Model. CSSOM e DOM sono strutture indipendenti, costruite separatamente.
3. DOM + CSSOM → albero di rendering. I due alberi si combinano e mantengono il
contenuto visibile. display: none rimuove un elemento dall’albero; visibility: hidden
lo mantiene nel layout ma non lo disegna.
4. Layout. Calcola posizione e dimensioni di ogni oggetto, producendo il box model.
5. Disegno. Usa l’albero finale per renderizzare i pixel.
6. Compositing e visualizzazione. I livelli disegnati vengono combinati e mostrati.
Proprietà come transform e opacity possono ripetere soltanto questo passaggio, senza
nuovo layout o disegno, e sono quindi meno costose da animare.
Il CRP è la parte da completare prima del primo disegno: ottimizzarlo significa capire le elaborazioni che trasformano i byte HTML, CSS e JavaScript in pixel.
Due blocchi, due meccanismi diversi
Il CSS blocca il rendering quando è applicabile. Il browser non mostra contenuti
finché non costruisce il CSSOM. Un <link> con media="print" durante una normale
visita non blocca, pur venendo scaricato. L’applicabilità può però cambiare con media
query, viewport o DOM, richiedendo altro lavoro. Un solo foglio lento e applicabile nel
<head> può trattenere il primo disegno.
JavaScript blocca la costruzione del DOM. Quando il parser incontra uno script,
si ferma e lo esegue; se è esterno, ne attende anche il download. Uno scanner secondario
continua comunque a scoprire e recuperare immagini, script e CSS. async rimuove il
blocco del download ma può interrompere il thread principale quando arriva; defer
attende la fine dell’analisi e conserva l’ordine, risultando spesso più sicuro.
Le tre leve di ottimizzazione
web.dev indica tre variabili:
- Riduci il numero di risorse critiche: eliminale, rinviane il download o rendile asincrone.
- Riduci la lunghezza del percorso critico: meno round trip nella catena di dipendenze.
- Riduci i byte critici: minimizza, comprimi e suddividi.
In pratica: inserisci nel <head> il CSS critico above-the-fold; carica il resto in
modo asincrono; limita il CSS non critico con media query; applica defer al JavaScript
non essenziale; usa preload per risorse confermate. La mia guida LCP di Ahrefs
descrive lo stesso meccanismo come riordino del download e CSS critico inline.
preload e fetchpriority fanno lavori diversi. preload anticipa il recupero di
una risorsa non ancora scoperta; fetchpriority cambia soltanto la priorità di una
richiesta già prevista. Un preload con URL, tipo as o credenziali errati può essere
inutilizzato o duplicato; troppe priorità alte annullano il vantaggio. Verifica sempre
con waterfall o trace prima e dopo.
Il legame con i Core Web Vitals
- FCP segue il completamento del CRP, ma è una tappa, non una diagnosi. Un CRP lungo tende a produrre FCP tardivo, ma FCP non identifica la fase colpevole e un FCP rapido non dimostra che ogni dipendenza sia pronta.
- LCP può ereditare il ritardo. Abby Hamilton osserva che il CRP incide spesso soprattutto su LCP. Un grande intervallo TTFB→FCP può segnalare molte risorse bloccanti, ma la causa va confermata con waterfall o trace.
- TBT/INP risentono di JavaScript. Gli script critici competono per il thread principale e i task lunghi danneggiano l’interattività.
LCP è un segnale di ranking, ma risultati sul campo ed effetti specifici richiedono dati CrUX/Search Console, non soltanto un test di laboratorio.
Come influisce su Googlebot
Il Web Rendering Service (WRS) elabora le app JavaScript nelle fasi scansione, rendering e indicizzazione, usando una versione evergreen di Chromium headless. Le risorse bloccanti ne rallentano quindi il rendering come in un browser reale. È una deduzione dall’architettura condivisa, non la prova che ogni ritardo sia identico per ogni utente o provochi direttamente un danno a indice o ranking.
Tre conseguenze:
- La coda aggiunge ritardo. Le pagine attendono da pochi secondi a più tempo.
- WRS è senza stato e con cache sostanzialmente fredda. Come spiego nella mia guida JavaScript SEO, ogni pagina viene caricata come una nuova visita. WRS può ignorare header di cache e usare risorse CSS/JS non aggiornate; non puoi affidarti a una cache calda.
- Non bloccare risorse critiche in robots.txt. WRS deve recuperare CSS e JS per costruire il contenuto. Come spiego nella mia guida JavaScript SEO, impedirglielo può mostrare a Google una pagina rotta.
Bing non pubblica una serie equivalente sul CRP, ma ogni crawler basato su browser segue lo stesso principio e il budget di rendering di Bingbot è più limitato.
Caso limite: un disegno anticipato non dimostra che il contenuto sia pronto
Le app renderizzate sul client possono disegnare rapidamente una shell, uno skeleton o uno stato di caricamento e soddisfare FCP mentre il contenuto reale attende bundle, esecuzione e dati. Il CRP è terminato per la shell, non per il contenuto.
HTML server-rendered o statico evita in gran parte il problema. Su pagine JS controlla nel filmstrip o nella trace ciò che è davvero visibile al momento di FCP e quando appare il contenuto principale: sono due domande diverse.
Dove i professionisti SEO incontrano il CRP
Il punto più comune è l’audit «Elimina le risorse che bloccano il rendering» di PageSpeed Insights/Lighthouse. Espandilo per vedere risorse proprietarie e di terze parti. In WebPageTest esamina ciò che precede «Start Render»; in DevTools usa Coverage per CSS/JS inutilizzato. Un’unica trace è soltanto un campione: terze parti, consenso, service worker e cache calda o fredda cambiano tempi e scoperte tra esecuzioni.
Argomenti correlati
- Risorse che bloccano il rendering — come trovare CSS e JavaScript bloccanti in
PageSpeed Insights, Lighthouse e WebPageTest, usare
asyncedefer, inserire CSS critico inline, applicare media query e correggere l’avviso passo per passo.
Per le metriche, consulta Core Web Vitals, Largest Contentful Paint (LCP) e First Contentful Paint (FCP). Per il rendering di Googlebot, consulta JavaScript SEO e Come funziona la Ricerca.
Riepilogo AI
- CRP è un modello di dipendenze, non una sequenza rigida: HTML → DOM, CSS → CSSOM, albero di rendering → layout → disegno → compositing. Il browser può sovrapporre o ripetere attività.
- Due blocchi condizionali: il CSS applicabile blocca il disegno; JavaScript
sincrono blocca il parser, mentre lo scanner di precaricamento continua a recuperare.
deferè spesso più sicuro diasync. - Tre leve: numero di risorse critiche, lunghezza del percorso e byte critici.
Usa CSS critico inline, media query,
deferepreloadsolo dopo una verifica. - Core Web Vitals: FCP è una tappa, non la causa; un grande TTFB→FCP è un indizio; un CRP lungo ritarda LCP e JavaScript grava su TBT/INP.
- Googlebot: WRS usa Chromium headless evergreen, senza stato e con cache fredda; non bloccare CSS/JS critici in robots.txt. L’equivalenza esatta e gli effetti su indice o ranking non sono dimostrati dal solo CRP.
- Caso limite: una shell anticipata può soddisfare FCP prima del contenuto reale.
- Diagnosi: audit PageSpeed, waterfall WebPageTest e Coverage DevTools; ogni trace è un campione, non una garanzia.
Documentazione ufficiale
Google / web.dev
- Panoramica del percorso critico — concetto e primo rendering.
- Costruzione dell’Object Model — DOM e CSSOM.
- Albero di rendering, layout e disegno — DOM + CSSOM e box model.
- CSS che blocca il rendering — blocco e media query.
- Rimuovere JavaScript bloccante — parser,
asyncedefer. - Ottimizzare il CRP — risorse, lunghezza e byte.
- Ottimizzare LCP — intervallo TTFB→FCP ed effetti su LCP.
Google Search Central — Googlebot / WRS
- Nozioni di JavaScript SEO — scansione, rendering, indice e Chromium.
- Correggere problemi JavaScript nella Ricerca — recupero risorse, stato e cache.
Bing / Microsoft
- Bing non ha documentazione specifica sul CRP. Le linee guida consigliano JavaScript minimo e contenuti critici nell’HTML iniziale, con un budget di rendering più stretto.
Citazioni dalle fonti
Citazioni di Google/web.dev ed esperti nominati. I link portano al passaggio originale.
web.dev — pipeline
- «Bytes → characters → tokens → nodes → object model.» Citazione
- «The CSS bytes are converted into characters, then tokens, then nodes, and finally they are linked into a tree structure known as the ‘CSS Object Model’ (CSSOM).» Citazione
- «The CSSOM and DOM are independent data structures!» Citazione
- «The DOM and CSSOM trees combine to form the render tree.» Citazione
- «The output of the layout process is a ‘box model,’ which precisely captures the exact position and size of each element within the viewport.» Citazione
web.dev / Google — blocco del rendering
- «By default, CSS is treated as a render-blocking resource, which means that the browser won’t render any processed content until the CSSOM is constructed.» Citazione
- «Both HTML and CSS are render-blocking resources.» Citazione
- «Media types and media queries allow us to mark some CSS resources as non-render blocking.» Citazione
- «whenever the parser encounters a script it has to stop and execute it before it can continue parsing the HTML.» — Google. Citazione
- «By default JavaScript blocks DOM construction and thus delays the time to first render.» Citazione
web.dev — tre variabili
- «A critical resource is a resource that could block initial rendering of the page.» Citazione
- «To deliver the fastest possible time to first render, we need to minimize three variables: The number of critical resources. The critical path length. The number of critical bytes.» Citazione
- «A large delta between TTFB and FCP could indicate that the browser needs to download a lot of render-blocking assets.» Citazione
Google Search Central — Googlebot / WRS
- «a headless Chromium renders the page and executes the JavaScript.» Citazione
- «Googlebot and its Web Rendering Service (WRS) component continuously analyze and identify resources that don’t contribute to essential page content and may not fetch such resources.» Citazione
Abby Hamilton, direttrice SEO di Dentsu
- «Optimizing the critical rendering path will typically have the largest impact on Largest Contentful Paint (LCP) since it’s specifically focused on how long it takes for pixels to appear on the screen.» Citazione
Audit del percorso critico — lista di controllo
- Esegui l’URL in PageSpeed Insights/Lighthouse e controlla «Elimina le risorse che bloccano il rendering».
- CSS critico above-the-fold inline nel
<head>; foglio completo asincrono. - CSS non critico limitato da media query come
media="print". - Nessun
<script>sincrono non indispensabile nel<head>; usadeferoasync. - Byte critici ridotti: CSS/JS minimizzato, Brotli/gzip e niente codice inutilizzato, verificato in Coverage.
- Percorso critico corto: meno round trip e
preloadsoltanto per risorse dimostrate. - In WebPageTest, niente di importante dopo la linea «Start Render».
- Elementi above-the-fold/LCP non nascosti con
display:nonequando devono apparire subito. - CSS e JS non bloccati in
robots.txt. - Controllato l’intervallo TTFB→FCP nei dati sul campo.
Modelli mentali
1. La pipeline segue le dipendenze: trova il passaggio lento. Byte → DOM, CSS → CSSOM, albero → layout → disegno. Individua se il collo di bottiglia è CSS, script o DOM.
2. Due blocchi e due meccanismi. Il CSS blocca il disegno; JavaScript sincrono blocca l’analisi. Correggere il meccanismo sbagliato spreca lavoro.
3. Le tre leve. Ogni correzione riduce numero, lunghezza o byte critici.
4. FCP è il tabellone del percorso. FCP osserva il primo contenuto; un grande TTFB→FCP suggerisce risorse bloccanti, ma va diagnosticato prima di intervenire.
5. Googlebot rende come un browser freddo e senza stato. Ottimizza per il bot come
per gli utenti e non bloccare in robots.txt il CSS/JS necessario.
Percorso critico — scheda rapida
Che cosa blocca cosa
| Risorsa | Blocca… | Comportamento predefinito | Come renderla non bloccante |
|---|---|---|---|
| HTML | È l’input | Analizzato nel DOM | — |
CSS (<link rel="stylesheet">) | Rendering/disegno | Blocca il rendering | media query; CSS critico inline + resto asincrono |
<script> sincrono | Analisi DOM | Blocca il parser | defer o async |
CSS con media (media="print") | Nulla | Non bloccante, viene scaricato | Già non bloccante |
async, defer e sincrono
| Download | Esecuzione | Sicuro per il CRP? | |
|---|---|---|---|
| Nessun attributo | Blocca il parser | Immediata | No |
async | In parallelo | Appena scaricato, può interrompere | In parte |
defer | In parallelo | Dopo l’HTML, in ordine | Sì |
Le tre leve
| Leva | Obiettivo | Metodo |
|---|---|---|
| Risorse critiche | Meno | elimina, rinvia, async |
| Lunghezza | Meno round trip | appiattisci dipendenze, preload |
| Byte critici | Più piccoli | minimizza, comprimi, rimuovi CSS/JS inutilizzato |
Dati rapidi
- FCP è la tappa del completamento; un grande TTFB→FCP suggerisce blocchi.
display:nonerimuove dall’albero;visibility:hiddenmantiene il layout.- WRS usa Chromium headless evergreen, senza stato, e può ignorare header di cache.
- Non bloccare CSS/JS critici in robots.txt.
Strumenti per diagnosticare il percorso critico
- PageSpeed Insights / Lighthouse — audit delle risorse CSS/JS bloccanti.
- Chrome DevTools, Performance — eventi DOM/CSSOM/layout/disegno e flame chart.
- Chrome DevTools, Coverage — CSS e JavaScript inutilizzato da rinviare o rimuovere.
- WebPageTest — waterfall, linea «Start Render» e filmstrip.
- Search Console, Controllo URL — HTML renderizzato e screenshot di WRS.
- CrUX / dati sul campo PSI — FCP reale e intervallo TTFB→FCP.
Risorse utili
I miei articoli
- Problemi e best practice JavaScript SEO — WRS, risorse e contenuto nel DOM.
- Largest Contentful Paint — ordine delle risorse e CSS critico.
- Guida alla SEO tecnica — rendering e prestazioni nel quadro generale.
I miei interventi
- How Search Works — scansione, rendering, indicizzazione e ranking, con la mia consueta avvertenza sui limiti del modello.
Fonti ufficiali
- Serie web.dev sul CRP: panoramica, object model, albero, CSS bloccante e ottimizzazione.
- Rimuovere JavaScript bloccante.
Da altri
- Identify & Reduce Render-Blocking Resources — guida di Abby Hamilton/Dentsu.
- r/TechSEO — debug di rendering e Core Web Vitals.
Quale collo di bottiglia correggere per primo?
Cosa ritarda il primo disegno utile?
Errori nel percorso critico
Rinviare ogni script senza controllare le dipendenze
Cambiare l’ordine può rompere codice che si aspetta globali o elementi precedenti. Mappa le dipendenze e verifica prima e dopo.
Inserire inline un intero foglio di stile
Elimina una richiesta ma gonfia ogni risposta HTML e perde la cache nelle visite successive. Inserisci soltanto un insieme critico piccolo e misurato.
Bloccare CSS o JavaScript a Googlebot
Il renderer di Google usa le risorse che costruiscono la pagina. Una regola robots può impedirgli di vedere correttamente il contenuto.
Ottimizzare il numero di richieste senza misurare la lunghezza del percorso
Meno file non significa sempre più velocità se una grande risorsa ritarda tutto. Misura insieme byte, profondità e tempi di arrivo.
Mettiti alla prova: percorso critico di rendering
Cronologia modifiche
Aggiornato il 17 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.