Ridurre le richieste HTTP con la tecnica CSS Sprites significa ottimizzare le prestazioni di una pagina web combinando molte piccole immagini in un unico file grafico e mostrando, tramite CSS, solo la porzione necessaria. L’obiettivo è evitare che icone, pulsanti, varianti di logo, simboli social e altri elementi dell’interfaccia generino una richiesta HTTP separata per ogni file, migliorando i tempi di caricamento e offrendo un’esperienza più fluida, soprattutto su connessioni mobili o reti non perfettamente stabili.
Nelle performance web moderne non conta soltanto il peso delle immagini: è importante anche quante volte il browser deve contattare il server. Con HTTP/2 e HTTP/3 il costo di molte richieste parallele si è ridotto rispetto al passato, ma ogni richiesta comporta comunque passaggi come risoluzione DNS, handshake TLS, priorità, coda, controllo della cache e parsing da parte del browser. Per questo, nello scenario giusto, l’approccio CSS sprites può ancora offrire benefici pratici e misurabili, in particolare nelle interfacce ricche di icone.
In questa guida vedremo che cosa sono i CSS sprites, quando conviene usarli, come si confrontano con le alternative moderne, come implementarli passo dopo passo e quali impostazioni lato hosting aiutano a ottenere il massimo risultato. Questo contenuto preparato per il blog Hostragons non si limita alla teoria: l’obiettivo è proporre un piano di ottimizzazione applicabile, verificabile e sostenibile in progetti reali.
Perché il numero di richieste HTTP incide sulla velocità del sito?
Quando una pagina web viene aperta, il browser non scarica solo il file HTML. Richiede anche fogli di stile CSS, file JavaScript, font, immagini, favicon, script pubblicitari, codici di analytics e risorse di terze parti. Ogni risorsa avvia un’operazione di rete. Più cresce il numero di richieste, più il browser deve gestire file, priorità e dipendenze, e nella fase di primo caricamento possono comparire ritardi percepibili.
Immaginiamo, per esempio, la home page di un e-commerce con 24 piccole icone di categoria, 8 loghi dei metodi di pagamento, 6 icone social e 10 icone dell’interfaccia. Se tutte queste risorse vengono caricate come file PNG o SVG separati, solo le icone possono generare 48 richieste HTTP. Anche se ogni file pesa appena 1-3 KB, il costo complessivo di rete non dipende solo dalla dimensione dei file: header, validazione della cache e gestione delle connessioni aggiungono ulteriore lavoro.
La tecnica CSS sprites entra in gioco proprio qui. Invece di scaricare 48 immagini piccole, il browser scarica un unico file sprite. Dal lato CSS, con background-position, ogni elemento mostra le coordinate corrette di quella grande immagine. In questo modo il numero di richieste può diminuire in modo significativo. Con uno sprite ben compresso si controlla anche il peso totale del file, semplificando il lavoro di download e rendering del browser.
Che cosa sono i CSS Sprites e come funzionano?
Un CSS sprite è un file immagine che contiene più piccole grafiche posizionate in modo ordinato all’interno di un’unica superficie. Il browser scarica questo solo file, mentre il CSS imposta larghezza e altezza dell’elemento e rende visibile soltanto la porzione desiderata dello sfondo. Di solito si utilizzano proprietà come background-image, background-position, width, height e background-size.
Prendiamo un esempio semplice: in un file sprite sono presenti tre icone da 32x32 pixel, affiancate orizzontalmente. La prima icona può essere mostrata con posizione 0 0, la seconda con -32px 0 e la terza con -64px 0. Così, invece di inserire tre tag immagine diversi nell’HTML, si usano tre classi CSS diverse che richiamano aree differenti dello stesso file di background.
Questo approccio funziona meglio quando l’immagine non ha un valore semantico di contenuto, ma è decorativa o legata all’interfaccia. Sono buoni candidati le icone di menu, le frecce, i badge, gli indicatori di stato, le stelle delle recensioni, i simboli dei metodi di pagamento e gli stati hover. Al contrario, immagini di prodotto, copertine di articoli o elementi visivi che richiedono testo alternativo per SEO e accessibilità non dovrebbero essere inseriti in uno sprite.
In quali progetti la tecnica sprite è più utile?
I CSS sprites non sono indispensabili in ogni sito web. In alcune tipologie di progetto, però, il loro impatto è più evidente. Interfacce con molte piccole immagini ricorrenti, siti aziendali con menu complessi, vecchi temi, pannelli di amministrazione, set di landing page e componenti e-commerce con icone statiche possono trarre vantaggio da questa tecnica.
- Siti web che utilizzano molte piccole icone PNG o JPG.
- Progetti con un’alta percentuale di utenti mobile e sensibili alla latenza.
- Siti basati su vecchi temi o software personalizzati con troppe richieste HTTP.
- Componenti statici dell’interfaccia in cui si vuole migliorare l’efficienza della cache.
- Design system in cui icon font o SVG inline non sono la soluzione più adatta.
Che si tratti di hosting condiviso, VPS o server cloud, semplificare la gestione dei file statici resta una scelta utile per le prestazioni. Su un sito pubblicato con Hostragons, questo tipo di ottimizzazione rende meglio se accompagnato da un’infrastruttura hosting solida, intestazioni di cache corrette e una configurazione SSL adeguata. Per gli approfondimenti sui servizi correlati si possono inserire in modo naturale collegamenti a Hosting Web, server VPS e certificato SSL.
CSS Sprites e alternative moderne a confronto
Nel 2026 i CSS sprites non sono l’unica soluzione corretta per ogni situazione. Tra le alternative ci sono SVG sprite, icon font, SVG inline, tecniche moderne con CSS mask e l’utilizzo di file separati su infrastrutture HTTP/2 ben configurate. La scelta dovrebbe tenere insieme architettura del sito, competenze del team, manutenzione nel tempo e requisiti di accessibilità.
| Metodo | Uso più adatto | Vantaggio | A cosa fare attenzione |
|---|---|---|---|
| CSS sprites | Piccole icone raster PNG/JPG per interfacce | Riduce le richieste HTTP e offre ampia compatibilità con browser datati | La manutenzione e la gestione delle coordinate possono diventare complesse |
| SVG sprite | Sistemi di icone vettoriali | Immagini nitide, controllo dei colori e scalabilità | Richiede configurazione corretta e pulizia sicura degli SVG |
| Icon font | Design system più datati | Permette di servire molte icone con un solo file font | Può creare problemi di accessibilità e rendering |
| File immagine separati | Poche icone o immagini di contenuto | Manutenzione semplice | Con molti file aumenta il carico di richieste |
| SVG inline | Poche icone critiche | Non genera richieste extra e si controlla con CSS | Può aumentare la dimensione dell’HTML |
La regola pratica è questa: se l’interfaccia usa molte icone raster, i CSS sprites restano una scelta sensata. Se le icone sono vettoriali e devono cambiare colore spesso, uno SVG sprite può essere più moderno e flessibile. Se invece il progetto include solo 4-5 piccole icone, preparare uno sprite potrebbe non valere la pena: file separati con una cache ben impostata possono essere più che sufficienti.
Come applicare la tecnica CSS Sprites passo dopo passo
Un buon lavoro con gli sprite non consiste semplicemente nel mettere immagini una accanto all’altra. Prima bisogna analizzare le risorse esistenti, poi scegliere il formato corretto, definire con precisione le coordinate CSS e infine verificare i risultati con test di performance. Il processo seguente può essere applicato in sicurezza in un progetto reale.
1. Analizza le immagini esistenti e il numero di richieste
Il primo passaggio è decidere quali immagini inserire nello sprite. Apri la scheda Network di Chrome DevTools, ricarica la pagina senza cache e usa il filtro Img. Elenca le icone piccole ma numerose. Se, per esempio, trovi 30 file PNG con dimensioni comprese tra 1 KB e 8 KB, quel gruppo potrebbe essere un buon candidato per uno sprite.
Durante l’analisi rispondi a queste domande: l’immagine è decorativa o è contenuto? Richiede testo alternativo? Viene riutilizzata in più pagine? Cambia spesso? Ha varianti di colore o dimensione? Le risposte definiscono il piano dello sprite. Inserire nello sprite immagini con significato di contenuto non è corretto né per la SEO né per l’accessibilità.
2. Pianifica il file sprite
Nel secondo passaggio occorre pianificare il posizionamento delle icone. Disporre icone della stessa dimensione in riga o in colonna semplifica la gestione delle coordinate. Se hai dimensioni diverse, per esempio 24x24, 32x32 e 48x48, conviene raggrupparle su righe distinte. Lasciare 2-4 pixel di spazio tra le icone aiuta a evitare sbavature o porzioni di sfondo non desiderate.
Per il file sprite il formato PNG è spesso adatto; se serve trasparenza, PNG-24 è una scelta comune. Per piccole grafiche simili a foto si può valutare WebP, ma quando si lavora con background-position bisogna controllare supporto browser e necessità di fallback. Per icone SVG, invece di creare uno sprite raster, di solito è più efficiente adottare uno SVG sprite.
3. Crea il file sprite
Puoi creare il file sprite manualmente con strumenti come Figma, Photoshop o Affinity Designer. Nei progetti più strutturati è meglio integrare un generatore di sprite nel processo di build. Per esempio, puoi inserire le icone sorgente in una cartella dedicata e generare automaticamente, durante la compilazione, sia l’immagine sprite sia il CSS corrispondente. Questo riduce il costo di manutenzione.
Dai al file un nome chiaro. Un nome come ui-sprite-v1.png comunica sia lo scopo sia la versione del file. Quando aggiungi una nuova icona, passare a ui-sprite-v2.png può essere comodo per invalidare la cache. In alternativa, puoi usare un sistema di build che aggiunge un hash al nome del file e gestisce automaticamente il versionamento.
4. Scrivi le classi CSS
Per l’uso di base si può definire una classe comune e una classe di posizione per ogni icona. Nella classe comune possono comparire proprietà come background-image: url(/assets/ui-sprite.png); background-repeat: no-repeat; display: inline-block;. Nella classe specifica di ogni icona si impostano width, height e background-position.
La logica è questa: la classe .icon-search ha larghezza e altezza di 24px e background-position pari a 0 0. La classe .icon-user può usare -24px 0, mentre .icon-cart può usare -48px 0. Così tre icone vengono mostrate partendo da un solo file. In un esempio minimo il numero di file scende da tre a uno; in progetti più grandi il vantaggio può essere molto più consistente.
Per schermi Retina o ad alta densità si può preparare uno sprite 2x. Per esempio, l’icona ha dimensione CSS 24x24, ma la grafica reale nello sprite è 48x48. In questo caso si usa background-size per scalare l’intero sprite in pixel CSS. In questo modo si riduce la sfocatura su display ad alta risoluzione.
5. Cura l’uso semantico nell’HTML
Se le icone mostrate con lo sprite sono decorative, si può usare una strategia con testo vuoto o testo nascosto in modo accessibile. Se invece l’icona è l’unico contenuto visibile di un pulsante, bisogna fornire un nome comprensibile agli screen reader. Per esempio, un pulsante composto solo dall’icona del carrello deve avere un’etichetta accessibile come Vai al carrello. I CSS sprites migliorano le performance, ma non devono sacrificare l’accessibilità.
Lo stesso principio vale per la SEO. Non nascondere in uno sprite immagini di prodotto, infografiche o immagini editoriali che vuoi far comparire nella ricerca immagini di Google. Per questi contenuti è meglio usare il tag img, un testo alt corretto, attributi width e height e, quando opportuno, lazy loading. Gli sprite vanno pensati soprattutto per il livello di interfaccia.
6. Configura cache e compressione
Per ottenere il massimo da un file sprite, le intestazioni di cache lato server devono essere impostate correttamente. Per sprite che cambiano raramente si può definire una durata di cache lunga. Quando il file cambia, il nome o l’hash devono cambiare a loro volta, così il browser scarica la nuova versione. Questo approccio permette agli utenti di ritorno di riutilizzare lo stesso sprite dalla cache del browser.
Gzip e Brotli sono molto efficaci sui file testuali; le immagini invece sono già compresse nel proprio formato. Per questo bisogna considerare anche strumenti di ottimizzazione PNG, valutazione di WebP/AVIF e strategie di caching tramite CDN. Nell’infrastruttura Hostragons, per supportare la velocità del sito con pratiche di cache e pubblicazione sicura, si possono valutare collegamenti a Hosting WordPress, Utilizzo del CDN e Guida all'Accelerazione del Sito.
Esempio pratico: da 40 richieste a 6 richieste
Ragioniamo su uno scenario realistico. In un sito aziendale ci sono 10 icone nel menu superiore, 8 icone social e di contatto nel footer, 12 piccoli simboli nei box delle funzionalità, 6 icone di stato nei form e 4 loghi nell’area pagamenti. In totale vengono richiesti 40 piccoli file immagine. Se ogni file pesa in media 2 KB, il peso complessivo sembra solo 80 KB; tuttavia 40 richieste separate creano un costo di rete inutile, soprattutto alla prima visita.
Questi file possono essere divisi in quattro gruppi e trasformati in due file sprite più alcuni SVG critici separati. Alla fine, 40 richieste di immagini possono diventare 6. Se si ipotizza che ogni richiesta aggiunga mediamente 20-40 ms di costo tra rete e browser, sulle connessioni mobili lente il miglioramento può essere percepibile. Il guadagno non è identico in ogni progetto: per questo è indispensabile misurare prima e dopo.
Il punto a cui prestare attenzione è che la dimensione totale dei file non deve aumentare. Uno sprite non ottimizzato, pieno di spazi inutili, potrebbe pesare 220 KB invece di 80 KB: in quel caso il numero di richieste diminuisce, ma le prestazioni possono peggiorare. Una buona ottimizzazione riduce le richieste mantenendo in equilibrio il peso trasferito e il costo di elaborazione delle immagini.
Impatto sui Core Web Vitals

I CSS sprites, da soli, non fanno miracoli sui Core Web Vitals; se usati correttamente, però, possono supportare le metriche. Meno richieste aiutano le risorse critiche a essere scaricate più rapidamente. Questo può offrire un beneficio indiretto su Largest Contentful Paint e First Contentful Paint. Inoltre, con meno congestione di rete, il browser può dedicare più risorse al download di JavaScript, CSS e font.
Per Cumulative Layout Shift è fondamentale che le dimensioni delle icone siano definite con chiarezza nel CSS. Se per un’icona sprite non vengono indicati width e height, durante il caricamento possono verificarsi spostamenti di layout. Per questo ogni classe icona deve dichiarare con precisione l’area visibile. Anche per Interaction to Next Paint, ridurre la pressione di rete può contribuire a una prima esperienza di caricamento più equilibrata.
Per misurare i risultati puoi usare Lighthouse, PageSpeed Insights, WebPageTest e Chrome DevTools. Non limitarti a un solo test: esegui almeno 3-5 ripetizioni. Misura separatamente prima visita e visite successive. I test con throttling mobile sono particolarmente utili perché si avvicinano di più all’esperienza reale degli utenti.
Errori comuni quando si usano i CSS Sprites
La tecnica sprite sembra semplice, ma se applicata male può aumentare la complessità di manutenzione e creare nuovi problemi di performance. L’errore più comune è inserire ogni immagine in un unico sprite gigantesco. In questo modo, per visualizzare un’icona usata solo nel footer, l’utente deve scaricare tutte le icone del sito. Un approccio migliore consiste nel creare piccoli gruppi logici in base al contesto d’uso.
- Inserire immagini di contenuto nello sprite e ignorare la necessità del testo alternativo.
- Usare sprite a bassa risoluzione su schermi Retina o ad alta densità.
- Pubblicare il file sprite senza ottimizzarlo.
- Gestire manualmente le coordinate senza documentarle.
- Non prevedere una strategia di cache busting quando il file cambia.
- Far caricare a tutto il sito icone usate in una sola pagina.
- Usare gli sprite per abitudine senza valutare HTTP/2 e le opzioni SVG moderne.
Per evitare questi errori, collega la decisione sugli sprite al performance budget del progetto. Se una pagina ha meno di 15 richieste immagine e i file sono ben memorizzati in cache, i CSS sprites potrebbero non essere necessari. In un pannello di amministrazione con 50-100 piccole icone, invece, uno sprite raster o uno SVG sprite può fare una differenza importante.
Aspetti da considerare insieme a hosting, CDN e SSL
Le ottimizzazioni front-end danno risultati migliori quando si appoggiano a un’infrastruttura hosting solida e configurata correttamente. Ridurre le richieste con i CSS sprites è un passo importante, ma se il tempo di risposta del server è alto, l’handshake SSL è lento o le intestazioni di cache mancano, il beneficio resta limitato. Le prestazioni vanno quindi considerate in modo complessivo.
In un buon ambiente hosting, i file statici devono essere serviti velocemente, deve esserci supporto per HTTP/2 o HTTP/3, la configurazione TLS deve essere aggiornata e le politiche di cache devono essere controllabili. Nelle soluzioni Hostragons, la scelta del pacchetto corretto in base al tipo di sito, l’integrazione CDN e l’installazione SSL possono far parte del piano di performance. In questo contesto si possono usare in modo naturale collegamenti a Verifica del dominio, Hosting Aziendale, certificato SSL e Trasferimento del sito web.
Se servi i file sprite tramite CDN, chiarisci anche il processo di invalidazione della cache. Quando il file viene aggiornato, se la CDN continua a distribuire la vecchia versione, le nuove icone potrebbero non apparire o le coordinate potrebbero risultare sbagliate. La denominazione dei file basata su hash risolve in gran parte questo problema.
Checklist di implementazione
La checklist seguente ti aiuta a fare un controllo rapido prima di portare in produzione un’ottimizzazione con CSS sprites. È utile soprattutto quando nel team lavorano insieme sviluppatore, designer e specialista SEO, perché crea uno standard di qualità condiviso.
- Le immagini inserite nello sprite sono decorative o legate all’interfaccia?
- Immagini di contenuto, immagini prodotto e grafiche con valore SEO sono state lasciate fuori?
- Il file sprite è stato ottimizzato e gli spazi inutili sono stati rimossi?
- Per ogni icona width, height e background-position sono corretti?
- È stato pianificato background-size per schermi ad alta risoluzione?
- Sono stati definiti durata della cache, versionamento del file o strategia con hash?
- È stato misurato il numero di richieste HTTP prima e dopo?
- Sono stati eseguiti test Lighthouse e prove su dispositivi reali?
- Per accessibilità, pulsanti e link hanno un equivalente testuale comprensibile?
Conclusione
Ridurre le richieste HTTP con la tecnica CSS Sprites è ancora, nello scenario giusto, un metodo efficace e applicabile per migliorare le performance web. Soprattutto nei siti che usano molte piccole immagini d’interfaccia, permette di diminuire le richieste, migliorare l’efficienza della cache e rendere più ordinata la gestione dei file statici. Nel web moderno, però, questa tecnica non va usata in automatico: deve essere confrontata con SVG sprite, SVG inline, HTTP/2, CDN e strategie di cache.
In sintesi: misura prima di intervenire, scegli le immagini adatte, prepara uno sprite ottimizzato, definisci correttamente le coordinate CSS, configura la cache e testa di nuovo il risultato. Se vuoi supportare le prestazioni del tuo sito con un’infrastruttura più solida, puoi valutare le soluzioni hosting, dominio e SSL di Hostragons e individuare la configurazione più adatta al tuo progetto senza pressioni commerciali.
Domande frequenti
La tecnica CSS sprites è ancora necessaria nel 2026?
Sì, ma non in ogni progetto. Nei siti con molte piccole icone raster, i CSS sprites possono ancora ridurre le richieste HTTP. Se le icone sono poche, l’infrastruttura HTTP/2 è ben configurata o il design system è basato su SVG, metodi alternativi possono essere più adatti.
I CSS sprites aiutano direttamente la SEO?
Non garantiscono direttamente migliori posizioni nei risultati di ricerca; tuttavia possono supportare indirettamente la SEO migliorando velocità della pagina ed esperienza utente. Le immagini con significato di contenuto non dovrebbero essere inserite nello sprite, ma pubblicate con tag img e testo alt appropriato.
Il file sprite deve essere PNG o SVG?
Per icone raster, uno sprite PNG è diffuso e compatibile. Per icone vettoriali, invece, uno SVG sprite è spesso una soluzione più flessibile, nitida e scalabile. La scelta dipende dal tipo di grafica e dal design system del progetto.
I CSS sprites migliorano i Core Web Vitals?
Se implementati correttamente, possono supportare indirettamente i Core Web Vitals riducendo tempi di primo caricamento e congestione di rete. Tuttavia anche tempo di risposta del server, peso delle immagini, carico JavaScript e impostazioni di cache devono essere ottimizzati insieme.
Qual è l’errore più grave nell’uso dei CSS sprites?
L’errore principale è inserire tutte le immagini in un unico grande file sprite, includendo anche immagini di contenuto. Gli sprite vanno raggruppati in base al contesto d’uso, ottimizzati con cura e implementati senza perdere accessibilità e significato semantico.