divmagic Make design
SimpleNowLiveFunMatterSimple
Come pubblicare più CSS può effettivamente migliorare le prestazioni: l'approccio ingegneristico di GitHub
Blogs›CSS›Come pubblicare più CSS può effettivamente migliorare le prestazioni: l'approccio ingegneristico di GitHub
CSS

Come pubblicare più CSS può effettivamente migliorare le prestazioni: l'approccio ingegneristico di GitHub

DivMagic
DivMagic TeamOctober 9, 2026
8 min read

Come spedire più CSS può effettivamente migliorare le prestazioni: l'approccio di GitHub Engineering

Quando si parla di prestazioni frontend, il mantra è sempre stato: spedire meno CSS. I fogli di stile bloccano il rendering; ogni kilobyte ritarda la prima pittura. Eppure il team di ingegneria di GitHub ha fatto qualcosa che suona quasi eretico: hanno spedito più CSS e reso il loro sito più veloce. In questo approfondimento, esploreremo la strategia controintuitiva dietro questo successo, come hanno sfruttato le moderne capacità HTTP e cosa significa per il tuo percorso di ottimizzazione delle prestazioni.

Il paradosso delle prestazioni CSS

Il CSS è allo stesso tempo una benedizione e un collo di bottiglia. Dà vita al design ma blocca anche il rendering finché non viene completamente analizzato. Per anni, la migliore pratica è stata incorporare il CSS critico, gli stili minimi necessari per il contenuto sopra la piega, direttamente nell'HTML e rimandare il resto. Questo ha ridotto le richieste che bloccano il rendering e ha dato agli utenti un'esperienza visiva più rapida.

Le tecniche di CSS critico possono migliorare la First Contentful Paint (FCP) fino al 50%, ma spesso lasciano un'enorme parte di CSS differito che alla fine deve essere caricato, causando spostamenti del layout e un'interattività più lenta.

Gli sviluppatori di GitHub hanno notato che, sebbene l'incorporamento del CSS critico aiutasse la FCP, non risolveva un problema crescente: il volume puro di CSS richiesto dalla loro complessa applicazione stava gonfiandosi. Il loro design system, l'interfaccia ricca di funzionalità e i layout reattivi significavano che non potevano semplicemente ridurre gli stili: avevano bisogno di un meccanismo di consegna più intelligente.

Come GitHub ha invertito l'equazione

L'intuizione del team è stata radicale: invece di combattere la crescita del CSS, l'avrebbero abbracciata, ma consegnandolo in un modo che mantenesse veloce il percorso di rendering critico. Il loro approccio, descritto nel post originale del blog di GitHub, si basava su due pilastri:

work, programming, laptop, working, coding, computer, programmer, technology, office, business, hacker, data, macbook, developer, workspace, workplace, programmer, programmer, programmer, programmer, programmer

  1. Dividere il CSS in più file creati appositamente che potessero essere caricati indipendentemente.
  2. Sfruttare il multiplexing HTTP/2 per servire quei file contemporaneamente senza blocco head‑of‑line.

Contrariamente agli estremi "un unico grande bundle" o "incorpora tutto", GitHub ha spedito più CSS totale, a volte 2 volte tanto, ma lo ha suddiviso in chunk più piccoli e non bloccanti. Il risultato: metriche di prestazione percepite e reali migliorate.

“In realtà abbiamo spedito più CSS di prima, ma lo abbiamo reso non bloccante. Il browser scarica più file in parallelo, quindi il percorso critico rimane snello.” – GitHub Engineering

L'analisi tecnica

Ecco esattamente cosa è successo sotto il cofano:

  • Hanno diviso il loro CSS in tre categorie: critico (incorporato), core (caricato in modo asincrono con alta priorità) e lazy (caricato su richiesta per pagine o interazioni non critiche).
  • I fogli di stile core sono stati contrassegnati con media="print" onload="this.media='all'" per garantire che non bloccassero il rendering ma si applicassero comunque appena scaricati.
  • HTTP/2 ha permesso a tutti questi file di essere trasmessi su una singola connessione, eliminando la penalità di accodamento di HTTP/1.1.

Il punto chiave: il volume totale di CSS è aumentato, ma poiché il browser non doveva aspettare un singolo file monolitico, l'utente vedeva il contenuto prima e poteva interagire più velocemente.

Usa il pannello Coverage del browser in DevTools per identificare il CSS inutilizzato prima di dividere. Dividi solo ciò che deve davvero essere asincrono, un'eccessiva frammentazione può ritorcersi contro.

Vantaggi prestazionali nel mondo reale

I dati di GitHub hanno mostrato una riduzione del 30% della First Contentful Paint e un miglioramento del 40% della Largest Contentful Paint sulle pagine chiave. Oltre alle metriche di laboratorio, gli utenti reali hanno sperimentato una sensazione di reattività notevolmente superiore, e anche i tassi di conversione basati su metriche sono migliorati.

Bar chart comparing First Paint time before (2.4s) and after (1.2s) implementing GitHub's CSS strategy.

I risultati non sono un'anomalia; sono una conseguenza diretta della comprensione di come funzionano i browser e le reti moderne. Quando smetti di trattare il CSS come un blocco monolitico e inizi a trattarlo come un insieme di asset indipendenti, sblocchi un parallelismo che avvantaggia tutti i visitatori.

Line chart showing average CSS file size growth from 2015 to 2023.

Perché questo è importante per il tuo progetto

Il web è cambiato. HTTP/2 e HTTP/3 sono ormai la norma, le cache dei browser sono più sofisticate e le capacità dei dispositivi variano enormemente. Il vecchio paradigma "un unico bundle per dominarli tutti" non regge più. Spedendo più CSS in modo intelligente, puoi:

code, coding, programming, html, typing, work, business, hands, laptop, computer, technology, office, gray business, gray computer, gray office, gray technology, gray laptop, gray work, gray company, gray code, gray coding, gray programming, coding, coding, programming, programming, html, html, html, html, html

  • Ridurre il tempo di blocco del rendering continuando a offrire un'esperienza visiva ricca.
  • Migliorare la granularità della cache: cambiare lo stile di un pulsante non dovrebbe invalidare l'intero foglio di stile.
  • Abilitare il code splitting e il caricamento lazy del CSS per i componenti che appaiono successivamente.

Implementare la strategia

Pronto a provarci? Segui questi passaggi:

  1. Controlla il tuo CSS attuale, usa strumenti come Lighthouse o Webpack Bundle Analyzer per vedere cosa è davvero critico.
  2. Incorporare solo il minimo assoluto per il contenuto sopra la piega (di solito 10–15 KB).
  3. Dividi il resto in categorie core e lazy in base all'uso dei componenti e alla priorità della pagina.
  4. Consegna il CSS core con rel="preload" o il trucco del media per ottenere un caricamento non bloccante.
  5. Abilita HTTP/2 sul tuo server e testa con throttling reale.

GitHub ha scoperto che anche un piccolo aumento del CSS totale era accettabile quando suddiviso in modo appropriato – il download parallelo mascherava i byte extra, e la migliore cache compensava ampiamente.

Il ruolo della cache e dei CDN

Un altro vantaggio trascurato: i file suddivisi invecchiano in modo diverso. Il tuo reset globale o i token del design system cambiano raramente e possono essere memorizzati nella cache per mesi. Il CSS appena suddiviso per una funzionalità specifica può essere versionato indipendentemente. Questo significa che i visitatori di ritorno caricano quasi nessun CSS nelle visite successive, mentre i visitatori alla prima esperienza ottengono comunque un'esperienza non bloccante. Abbinata a un CDN, questa strategia diventa ancora più potente.

Colmare il divario con lo sviluppo UI

Come sviluppatore, costruire queste strategie CSS finemente sintonizzate può sembrare opprimente, soprattutto quando stai cercando di replicare un design straordinario da un sito web veloce e rifinito. È qui che DivMagic entra in gioco. DivMagic ti permette di copiare qualsiasi interfaccia utente da qualsiasi sito web con un singolo clic, catturando l'esatta struttura CSS e HTML che rende quel componente performante e dall'aspetto fantastico. Invece di architettare gli stili da zero, puoi studiare come i siti ad alte prestazioni suddividono il loro CSS, quindi adattare i loro schemi al tuo progetto. È un enorme risparmio di tempo quando hai bisogno di punti di partenza rapidi e pronti per la produzione.

javascript, programmer, code, technology, coding, css, javascript, javascript, javascript, javascript, javascript

"divMagic non si limita a clonare l'aspetto visivo; preserva l'organizzazione CSS che può darti indizi su decisioni attente alle prestazioni."

Aggiungere più CSS aiuta sempre? Sapere quando fermarsi

Il successo di GitHub non significa che devi gonfiare ciecamente i tuoi fogli di stile. La strategia funziona quando hai una reale necessità di styling complesso, un'applicazione ricca, un design system, temi multipli. Per i semplici siti brochure, meno CSS è ancora meglio. Misura sempre i tuoi Core Web Vitals e confronta i risultati prima e dopo. Il pannello di copertura e i dati sul campo (CrUX) dovrebbero guidare le tue decisioni.

Una potenziale insidia è il burst iniziale di download. Con troppi file piccoli, i limiti di concorrenza del browser possono entrare in gioco, portando a un caricamento più lento su connessioni HTTP/1.1. Assicurati che il tuo hosting supporti HTTP/2 o HTTP/3 e usa i suggerimenti di preload con giudizio.

Guardando avanti: il futuro della distribuzione CSS

L'approccio di GitHub indica la direzione verso cui sta andando l'industria: caricamento CSS a livello di componente che si lega direttamente al code splitting di JavaScript. Framework come React, Vue e Svelte supportano sempre più stili per componente; combinati con bundler intelligenti, possiamo inviare solo il CSS di cui l'utente ha bisogno per la vista corrente, e caricarne altro mentre naviga. Non si tratta di inviare meno CSS totale; si tratta di inviare il CSS giusto al momento giusto.

Pie chart showing breakdown of render‑blocking resources, dominated by CSS at 70%.

Conclusione

Inviare più CSS può effettivamente migliorare le prestazioni quando ti liberi dal pensiero monolitico. Il team di ingegneria di GitHub ha dimostrato che suddividendo gli stili in blocchi non bloccanti e lasciando che HTTP/2 faccia il lavoro pesante, puoi migliorare sia la velocità reale che quella percepita. Mentre il web continua a evolversi, le vecchie regole vengono riscritte. Abbraccia il paradosso, misura senza sosta e non aver paura di inviare di più, basta inviare in modo più intelligente.

Inizia a costruire con DivMagic oggi stesso

Unisciti a oltre 10.000 sviluppatori, designer e imprenditori per copiare il codice da qualsiasi sito web e utilizzarlo nei propri progetti.

Get DivMagic for 42% off

Limited time deal for 22:45