{"id":47978,"date":"2021-09-30T09:43:12","date_gmt":"2021-09-30T07:43:12","guid":{"rendered":"https:\/\/kinsta.com\/?p=102244"},"modified":"2024-05-28T07:15:39","modified_gmt":"2024-05-28T06:15:39","slug":"ottimizzare-css","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/","title":{"rendered":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito"},"content":{"rendered":"<p>Anche nel 2021, le prestazioni web rimangono un problema. Secondo HTTP Archive, una pagina media richiede un <a href=\"https:\/\/httparchive.org\/reports\/page-weight?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">download di 2 MB<\/a>, fa pi\u00f9 di 60 richieste HTTP e pu\u00f2 impiegare <a href=\"https:\/\/httparchive.org\/reports\/loading-speed?start=latest\" target=\"_blank\" rel=\"noopener noreferrer\">18 secondi<\/a> per caricarsi completamente su un dispositivo mobile. I fogli di stile rappresentano 60 kB divisi in sette richieste, quindi raramente sono una priorit\u00e0 assoluta quando si cerca di affrontare i problemi di prestazioni.<\/p>\n<p>Tuttavia, i CSS hanno un effetto, per quanto lieve possa sembrare. Una volta che avete affrontato il vostro <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-javascript\/\">JavaScript<\/a>, imparare a ottimizzare correttamente il CSS dovrebbe essere la priorit\u00e0.<\/p>\n<p>Parliamone!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>In Che Modo i CSS Influenzano le Prestazioni della Pagina<\/h2>\n<p>I CSS sembrano innocenti ma possono richiedere un&#8217;elaborazione pesante.<\/p>\n<h3>I CSS Bloccano il Rendering<\/h3>\n<p>Quando il vostro browser incontra un tag <code>&lt;link&gt;<\/code> ferma gli altri download e l&#8217;elaborazione del browser mentre recupera e analizza il file CSS.<\/p>\n<p>Anche JavaScript pu\u00f2 <a href=\"https:\/\/kinsta.com\/it\/blog\/eliminare-javascript-e-css-che-boccano-la-visualizzazione\/\">bloccare il rendering<\/a> del browser, ma l&#8217;elaborazione asincrona \u00e8 possibile grazie a:<\/p>\n<ol>\n<li>L&#8217;attributo <code>async<\/code> per scaricare gli script in parallelo, che vengono eseguiti immediatamente quando sono pronti.<\/li>\n<li>L&#8217;attributo <code>defer<\/code> per scaricare in parallelo, quindi eseguire secondo l&#8217;ordine quando il DOM \u00e8 pronto.<\/li>\n<li>L&#8217;attributo <code>type=\"module\"<\/code> per caricare un modulo ES (che si comporta come il <code>defer<\/code>).<\/li>\n<\/ol>\n<p>Le risorse come le immagini spesso richiedono pi\u00f9 larghezza di banda, ma <a href=\"https:\/\/kinsta.com\/it\/blog\/webp\/\">sono disponibili formati efficienti<\/a> e possono essere <a href=\"https:\/\/kinsta.com\/it\/blog\/lazy-load-in-wordpress\/\">caricate in lazy-loading<\/a> (attributo <code>loading=\"lazy\"<\/code> ) senza bloccare il rendering del browser.<\/p>\n<p>Niente di tutto questo \u00e8 possibile con i CSS. Il file viene memorizzato nella cache, quindi i successivi caricamenti della pagina <em>dovrebbero<\/em> essere pi\u00f9 veloci, ma il blocco del rendering rimane.<\/p>\n\n<h3>I File CSS di Grandi Dimensioni Richiedono Tempo per Essere Processati<\/h3>\n<p>Pi\u00f9 grande \u00e8 il vostro foglio di stile, pi\u00f9 tempo ci vuole per scaricarlo ed elaborarlo in un CSSOM (CSS Object Model), che il browser e le API JavaScript possono usare per visualizzare la pagina. Anche se i fogli di stile CSS sono pi\u00f9 piccoli della maggior parte degli altri file web, non sono immuni dalla regola empirica &#8220;pi\u00f9 piccolo \u00e8, meglio \u00e8&#8221;.<\/p>\n<h3>I File CSS Crescono<\/h3>\n<p>Pu\u00f2 essere difficile identificare gli stili che non sono pi\u00f9 utilizzati e rimuovere quelli sbagliati pu\u00f2 generare il caos in un sito. Chi lavora nello sviluppo, di solito opta per l&#8217;approccio pi\u00f9 sicuro &#8220;conserva tutto&#8221;. Gli <a href=\"https:\/\/kinsta.com\/it\/blog\/il-pacchetto-non-puo-essere-installato\/\">stili di pagina<\/a>, i <a href=\"https:\/\/kinsta.com\/it\/blog\/web-component\/\">componenti<\/a> e i widget che non sono pi\u00f9 utilizzati continuano a esistere nei CSS. Il risultato? La dimensione del file, la complessit\u00e0 e lo sforzo di manutenzione aumentano esponenzialmente, e questo significa meno propensione da parte dei professionisti dello sviluppo a rimuovere il codice ridondante.<\/p>\n<h3>I Fogli di Stile Possono Fare Riferimento ad Altre Risorse<\/h3>\n<p>I CSS possono fare riferimento ad altri fogli di stile grazie alle regole @import. Queste importazioni bloccano l&#8217;elaborazione del foglio di stile corrente e caricano altri file CSS <strong>in serie<\/strong>.<\/p>\n<p>Anche altre risorse, come font e immagini, possono essere referenziate. Il browser cercher\u00e0 di ottimizzare i download, ma in caso di dubbio, li recuperer\u00e0 immediatamente. I file codificati in base64 subiscono ancora un&#8217;ulteriore elaborazione.<\/p>\n<h3>Rendering degli Effetti CSS<\/h3>\n<p>I browser hanno tre <a href=\"https:\/\/kinsta.com\/it\/blog\/percorso-rendering-critico\/\">fasi di rendering<\/a>:<\/p>\n<ol>\n<li>La fase di <strong>layout<\/strong> (o <strong>reflow<\/strong>) calcola le dimensioni di ogni elemento e come esso influisce sulla dimensione o sul posizionamento degli elementi intorno ad esso.<\/li>\n<li>La fase di <strong>paint<\/strong> disegna le parti visive di ogni elemento su livelli separati: testo, colori, immagini, bordi, ombre, ecc.<\/li>\n<li>Il <strong>composite<\/strong> disegna ogni strato sulla pagina nell&#8217;ordine corretto secondo i contesti di impilamento, posizionamento, z-index, ecc.<\/li>\n<\/ol>\n<p>Se non prestate attenzione, i cambiamenti di propriet\u00e0 CSS e le animazioni possono causare un nuovo rendering di tutte e tre le fasi. Alcune propriet\u00e0, come le ombre e i gradienti, sono anche computazionalmente pi\u00f9 costose dei colori del blocco e dei margini.<\/p>\n<h2>Strumenti di Analisi delle Prestazioni CSS<\/h2>\n<p>Ammettere di avere un problema di prestazioni CSS \u00e8 il primo passo sulla strada verso il recupero! Trovare e risolvere le cause \u00e8 un&#8217;altra questione.<\/p>\n<p>I seguenti strumenti e servizi (non classificati in un ordine specifico) possono aiutarvi a identificare i colli di bottiglia degli stili nel vostro codice.<\/p>\n<h3>1. Pannello Network in DevTools<\/h3>\n<p>Gli specialisti delle prestazioni web passano molto tempo su <a href=\"https:\/\/kinsta.com\/it\/blog\/ispeziona-elemento\/\">DevTools<\/a> e nel pannello <strong>Network (o Rete)<\/strong> in particolare. DevTools \u00e8 nativo per la <a href=\"https:\/\/kinsta.com\/it\/mercato-globale-dei-browser\/\">maggior parte dei browser moderni<\/a>, ma noi useremo Google Chrome per gli esempi.<\/p>\n<p>DevTools pu\u00f2 essere aperto dal menu del browser, di solito da <strong>Altri strumenti<\/strong> &gt; <strong>Strumenti di sviluppo<\/strong>, o tramite le scorciatoie da tastiera <strong>Ctrl | Cmd + Shift + I<\/strong> o <strong>F12<\/strong>.<\/p>\n<p>Andate alla scheda <strong>Rete<\/strong> e verificate che l\u2019opzione <strong>Disabilita la cache<\/strong> sia selezionata per evitare che i file nella cache influenzino il rapporto. Potete anche cambiare l&#8217;opzione throttling per simulare le reti mobili pi\u00f9 lente.<\/p>\n<p>Aggiornate la pagina per visualizzare il grafico a cascata del download e dell&#8217;elaborazione:<\/p>\n<figure style=\"width: 781px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/network-waterfall.png\" alt=\"Pannello di rete di DevTools\" width=\"781\" height=\"635\"><\/a><figcaption class=\"wp-caption-text\">Pannello di rete di DevTools<\/figcaption><\/figure>\n<p>Qualsiasi barra lunga nel grafico \u00e8 motivo di preoccupazione, ma dovreste focalizzarvi in particolare sulle barre lunghe bloccate o in stallo (mostrate in bianco). In questo esempio, la riga evidenziata e tutte le righe seguenti non potevano iniziare il download fino a quando i file CSS e JavaScript che bloccano il rendering non fossero stati elaborati all&#8217;inizio della pagina HTML.<\/p>\n<p>La casella <strong>Filtro<\/strong> vi permette di mostrare o nascondere risorse specifiche:<\/p>\n<ul>\n<li><code>larger-than:<em>&lt;S&gt;<\/em><\/code>: limita ai file pi\u00f9 grandi di <em>&lt;S&gt;<\/em><s><\/s>, espresso in byte (10.000), Kilobyte (1.000 kB), o megabyte (1 M).<\/li>\n<li><code>-larger-than:&lt;S&gt;<\/code>: limita ai file pi\u00f9 piccoli di <em>&lt;S&gt;<\/em>.<\/li>\n<li><code>-domain:*&lt;.yourdomain.com&gt;<\/code>: mostra le richieste di terzi che non sono caricate dal vostro dominio primario. Queste sono una delle principali cause della lentezza dei siti.<\/li>\n<\/ul>\n<p>Una pagina ad alte prestazioni con CSS ottimizzato ha tipicamente meno risorse caricate in parallelo con barre bloccate o in stallo pi\u00f9 brevi.<\/p>\n<h3>2. WebPageTest<\/h3>\n<p><a href=\"https:\/\/www.webpagetest.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebPageTest<\/a> fornisce una simile visualizzazione a cascata della rete, cos\u00ec come molti altri grafici sulle prestazioni:<\/p>\n<figure style=\"width: 1023px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/webpagetest.png\" alt=\"WebPageTest.org asset waterfall\" width=\"1023\" height=\"667\"><\/a><figcaption class=\"wp-caption-text\">WebPageTest.org asset waterfall<\/figcaption><\/figure>\n<p>Il servizio usa dispositivi basati in varie localit\u00e0 globali in modo da poter valutare le prestazioni del mondo reale e le ottimizzazioni CSS.<\/p>\n<h3>3. Pannello DevTools Lighthouse di Chrome<\/h3>\n<p>Il pannello DevTools <strong>Lighthouse<\/strong> \u00e8 incluso nei browser basati su Chromium come Chrome, Edge, Brave, Opera e Vivaldi. Potete generare rapporti sulle prestazioni, Progressive Web App, Best Practices, Accessibilit\u00e0 e <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-seo\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ottimizzazione dei motori di ricerca<\/a> per dispositivi mobile e desktop.<\/p>\n<figure style=\"width: 738px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/lighthouse-performance.png\" alt=\"Pannello DevTools Lighthouse\" width=\"738\" height=\"787\"><\/a><figcaption class=\"wp-caption-text\">Pannello DevTools Lighthouse<\/figcaption><\/figure>\n<p>Lo strumento fornisce suggerimenti di miglioramento, compresi i modi per ottimizzare i CSS. Non tutti possono essere pratici o possibili, ma vengono evidenziati i vantaggi principali.<\/p>\n<h3>4. Google PageSpeed Insights<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/google-pagespeed-insights\/\" target=\"_blank\" rel=\"noopener noreferrer\">PageSpeed Insights<\/a> \u00e8 la versione online di Lighthouse. Ha meno funzioni ma pu\u00f2 essere usato in qualsiasi browser e fornisce alcuni approfondimenti alternativi.<\/p>\n<p>Per esempio, questa alberatura mostra le pi\u00f9 grandi risorse JavaScript con una metrica di copertura, che indica quale proporzione di codice \u00e8 usata e quale no:<\/p>\n<figure style=\"width: 1254px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/pagespeed-treemap.png\" alt=\"Alberatura di Google PageSpeed Insights\" width=\"1254\" height=\"967\"><\/a><figcaption class=\"wp-caption-text\">Alberatura di Google PageSpeed Insights<\/figcaption><\/figure>\n<p>Il CSS non viene visualizzato, ma la quantit\u00e0 di JavaScript avr\u00e0 un peso sull&#8217;efficienza degli stili.<\/p>\n<p>Strumenti simili per <a href=\"https:\/\/kinsta.com\/it\/blog\/speed-test-sito-web\/#website-speed-test-tools\">testare la velocit\u00e0 del sito web<\/a> includono <a href=\"https:\/\/tools.pingdom.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pingdom Website Speed Test<\/a> e <a href=\"https:\/\/kinsta.com\/it\/blog\/speed-test-gtmetrix\/\">GTmetrix<\/a>.<\/p>\n<h3>5. Pannello <strong>Coverage<\/strong> di Chrome DevTools<\/h3>\n<p>Il pannello di <strong>Coverage<\/strong> DevTools nei browser basati su Chromium aiuta a localizzare il codice CSS (e JavaScript) inutilizzato. Selezionate <strong>Coverage<\/strong> dal sottomenu DevTools <strong>More tools<\/strong>, poi aggiornate la pagina e navigate sul sito\/applicazione:<\/p>\n<figure style=\"width: 752px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/coverage.png\" alt=\"Pannello Coverage di DevTools\" width=\"752\" height=\"793\"><\/a><figcaption class=\"wp-caption-text\">Pannello Coverage di DevTools<\/figcaption><\/figure>\n<p>Le risorse CSS e JavaScript sono mostrate nel pannello <strong>Coverage<\/strong>, con la proporzione di codice inutilizzato in rosso. Fate clic su qualsiasi file per visualizzare il codice sorgente con il codice inutilizzato evidenziato in rosso nel gutter del numero di linea.<\/p>\n<p>Alcune cose di cui prendere nota:<\/p>\n<ul>\n<li>Le metriche di copertura si resettano se aggiornate o passate a una nuova pagina, come succede su un sito WordPress. La metrica del codice inutilizzato diminuisce solo se state navigando in una Single Page Application che carica il contenuto senza un aggiornamento della pagina.<\/li>\n<li>Lo strumento pu\u00f2 solo tenere conto del CSS utilizzato fino a un determinato momento. Non pu\u00f2 determinare se un widget non \u00e8 stato visualizzato o ha pi\u00f9 stati legati a JavaScript.<\/li>\n<\/ul>\n<h3>6. Monitoraggio delle Prestazioni in Tempo Reale su Chrome DevTools<\/h3>\n<p>I browser basati su Chromium includono un Monitor delle prestazioni in tempo reale. Anche questo \u00e8 disponibile dal menu DevTools <strong>More tools<\/strong>. I grafici si aggiornano mentre navigate nelle pagine, le scorrete e attivate le animazioni:<\/p>\n<figure style=\"width: 750px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\" alt=\"Monitoraggio delle Prestazioni in Tempo Reale su DevTools.\" width=\"750\" height=\"312\"><\/a><figcaption class=\"wp-caption-text\">Monitoraggio delle Prestazioni in Tempo Reale su DevTools.<\/figcaption><\/figure>\n<p>Le seguenti metriche sono di particolare interesse per ottimizzare le prestazioni dei CSS (pi\u00f9 basse sono, meglio \u00e8):<\/p>\n<ul>\n<li><strong>Utilizzo della CPU: <\/strong>Utilizzo del processore da 0% a 100%.<\/li>\n<li><strong>Layout\/sec: <\/strong>La velocit\u00e0 con cui il browser deve ridisegnare la pagina.<\/li>\n<li><strong>Ricalibrazione stile\/sec: <\/strong>La velocit\u00e0 con cui il browser deve ricalcolare gli stili.<\/li>\n<\/ul>\n<p>Anche le altre metriche possono essere utili se il CSS sta avendo difficolt\u00e0 a causa di fattori esterni (di nuovo, valori pi\u00f9 bassi indicano migliori prestazioni):<\/p>\n<ul>\n<li><strong>Dimensione heap JS: <\/strong>La memoria totale utilizzata dagli oggetti JavaScript.<\/li>\n<li><strong>Nodi DOM: <\/strong>Il numero di elementi nel documento <a href=\"https:\/\/kinsta.com\/it\/blog\/best-practice-html\/\">HTML<\/a>.<\/li>\n<li><strong>Listener di eventi JS: <\/strong>Il numero di listener di eventi JavaScript registrati.<\/li>\n<li><strong>Documenti: <\/strong>Il numero di risorse, incluse la pagina, i file CSS, i moduli JavaScript, ecc.<\/li>\n<li><strong>Frame del documento: <\/strong>Il numero di frame, iframe e script JavaScript worker.<\/li>\n<\/ul>\n<h3>7. Rapporto sulle Prestazioni di DevTools<\/h3>\n<p>Il pannello delle <strong>prestazioni<\/strong> di DevTools vi permette di registrare le attivit\u00e0 della pagina per ulteriori analisi e aiutare a identificare i problemi di prestazioni. I rapporti generati sono complessi e chi lavora nello sviluppo spesso li evita, ma forniscono informazioni preziose.<\/p>\n<p>L&#8217;icona delle impostazioni del pannello Prestazioni vi permette di impostare varie opzioni, come il rallentamento della rete e della CPU. Potete anche disabilitare i campioni JavaScript in modo che gli stack delle chiamate dettagliate non vengano registrati.<\/p>\n<p>Per iniziare, fate clic sull&#8217;icona circolare <strong>Record<\/strong>, caricate e\/o usate la vostra pagina, poi fate clic sul pulsante <strong>Stop<\/strong> per visualizzare il rapporto:<\/p>\n<figure style=\"width: 673px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-report.png\" alt=\"Rapporto sulle prestazioni di DevTools\" width=\"673\" height=\"848\"><\/a><figcaption class=\"wp-caption-text\">Rapporto sulle prestazioni di DevTools<\/figcaption><\/figure>\n<p>Quasi tutte queste metriche saranno utili a chi sviluppa JavaScript, ma i problemi di ottimizzazione CSS possono essere particolarmente evidenti grazie a:<\/p>\n<ul>\n<li><strong>Barra rossa in alto: <\/strong>Questo indica che il frame rate \u00e8 sceso significativamente, il che potrebbe causare problemi di prestazioni. \u00c8 previsto all&#8217;inizio del caricamento di una pagina, ma anche le eccessive animazioni CSS potrebbero essere un problema.<\/li>\n<li><strong>Grafico riassuntivo: <\/strong>Metriche elevate di caricamento, rendering e painting possono indicare problemi di CSS.<\/li>\n<\/ul>\n<h2>Correzioni Indirette delle Prestazioni CSS<\/h2>\n<p>Le seguenti correzioni non risolvono direttamente i problemi CSS, ma possono aiutarvi a risolvere alcuni problemi di prestazioni con uno sforzo relativamente piccolo.<\/p>\n<h3>Usare un Buon Host<\/h3>\n<p>Usare un buon host con server fisicamente pi\u00f9 vicini ai vostri utenti porter\u00e0 benefici immediati in termini di prestazioni. I piani di hosting variano, ma esistono tre tipi principali:<\/p>\n<ol>\n<li><strong>Hosting condiviso: <\/strong>Il vostro sito web \u00e8 ospitato su un server fisico, probabilmente insieme a centinaia di altri siti. Spazio su disco, RAM, tempo di CPU e larghezza di banda sono condivisi. I piani sono spesso economici, ma le prestazioni e la disponibilit\u00e0 sono influenzate dagli altri siti. L&#8217;aggiornamento pu\u00f2 essere possibile, ma il vostro sito rimarr\u00e0 generalmente sulla stessa infrastruttura.<\/li>\n<li><strong>Hosting dedicato: <\/strong>Il vostro sito \u00e8 ospitato su uno o pi\u00f9 server fisici di vostra propriet\u00e0. L&#8217;hardware pu\u00f2 essere configurato e aggiornato secondo le esigenze. I piani sono spesso costosi e i guasti all&#8217;hardware rimangono problematici.<\/li>\n<li><strong>Cloud hosting: <\/strong>Il <a href=\"https:\/\/kinsta.com\/it\/blog\/piattaforma-cloud-per-sviluppatori\/\">cloud hosting<\/a> astrae l&#8217;infrastruttura hardware in un insieme di servizi a cui si pu\u00f2 accedere su richiesta. Il vostro sito potrebbe essere fornito su una serie di dispositivi per facilitare gli aggiornamenti.<\/li>\n<\/ol>\n<p>I piani di cloud hosting e i prezzi variano enormemente. Potreste prendere in considerazione:<\/p>\n<ol>\n<li>Opzioni <a href=\"https:\/\/kinsta.com\/it\/blog\/servizi-paas\/\">Platform as a Service (PaaS)<\/a>, come server web virtuali e database, o<\/li>\n<li>Opzioni <a href=\"https:\/\/kinsta.com\/it\/blog\/prodotti-saas\/\">Software as a Service (SaaS)<\/a>, che offrono <a href=\"https:\/\/kinsta.com\/it\/\">applicazioni completamente gestite come WordPress<\/a>.<\/li>\n<\/ol>\n<p>Cambiare host pu\u00f2 aumentare le prestazioni. \u00c8 improbabile che risolva tutti i vostri problemi, ma \u00e8 una soluzione economica ai problemi di backend e di larghezza di banda. Potreste anche considerare l&#8217;utilizzo di un <a href=\"https:\/\/kinsta.com\/it\/blog\/cdn-per-wordpress\/\">Content Delivery Network (CDN)<\/a> o di un CDN specializzato in immagini e video che pu\u00f2 distribuire il carico su pi\u00f9 posizioni geograficamente pi\u00f9 vicine agli utenti.<\/p>\n<h3>Sfruttare le Caratteristiche di Efficienza del Browser e del Server<\/h3>\n<p>Circa il 10% dei siti non attiva la compressione gzip (o migliore), che di solito \u00e8 l&#8217;opzione predefinita del server. Questo riduce la dimensione dei CSS del 60% o pi\u00f9 comprimendo i file prima della trasmissione. Non sistemer\u00e0 i CSS inefficienti, ma il codice arriver\u00e0 prima!<\/p>\n<p>Dovreste anche <a href=\"https:\/\/kinsta.com\/it\/impara\/http2\/\">attivare HTTP\/2<\/a> (o meglio), che invia dati in un formato binario pi\u00f9 piccolo, comprime le intestazioni e pu\u00f2 inviare pi\u00f9 di un file sulla stessa connessione TCP.<\/p>\n<p>Infine, assicuratevi che il browser possa mettere in cache i CSS e altri file in modo efficace. Di solito si tratta di impostare gli hashtag <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.21\" target=\"_blank\" rel=\"noopener noreferrer\">Expires<\/a>, <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.29\" target=\"_blank\" rel=\"noopener noreferrer\">Last-Modified<\/a> e\/o <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\" target=\"_blank\" rel=\"noopener noreferrer\">ETag<\/a> nell&#8217;intestazione HTTP.<\/p>\n<h3>Ottimizzare il CMS<\/h3>\n<p>I <a href=\"https:\/\/kinsta.com\/it\/blog\/software-cms\/\">sistemi di gestione dei contenuti<\/a> come WordPress possono essere estesi con temi e plugin che servono i propri CSS. Dove possibile, dovreste <a href=\"https:\/\/kinsta.com\/it\/ebooks\/wordpress\/velocizzare-wordpress\/\">velocizzare il vostro CMS<\/a> per:<\/p>\n<ol>\n<li>Rimuovere i plugin inutilizzati.<\/li>\n<li>Usare temi pi\u00f9 snelli<\/li>\n<li>Abilitare il <a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-la-cache\/\" target=\"_blank\" rel=\"noopener noreferrer\">caching<\/a> per evitare un&#8217;eccessiva rigenerazione delle pagine.<\/li>\n<\/ol>\n<h3>Ottimizzare le Immagini<\/h3>\n<p>Le immagini non hanno lo stesso overhead di elaborazione e rendering di HTML, CSS e JavaScript, ma rappresentano una grande proporzione del peso della pagina e della larghezza di banda utilizzabile. Considerate di:<\/p>\n<ol>\n<li>Rimuovere le immagini non necessarie.<\/li>\n<li>Ridimensionare le immagini grandi, forse non pi\u00f9 del 150% della dimensione massima che possono apparire sullo schermo.<\/li>\n<li>Usare un <a href=\"https:\/\/kinsta.com\/it\/blog\/formati-file-immagine\/\">formato immagine appropriato<\/a>, idealmente un&#8217;opzione altamente compressa come <a href=\"https:\/\/kinsta.com\/it\/blog\/webp\/\">WebP<\/a> o AVIF, ma possibilmente <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-svg\/\">SVG<\/a> per loghi e grafici.<\/li>\n<li>Sostituire le immagini con gradienti CSS o altri effetti.<\/li>\n<li>Aggiungere attributi di larghezza e altezza ai tag HTML <code>&lt;img&gt;<\/code> o usando la nuova <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/aspect-ratio\" target=\"_blank\" rel=\"noopener noreferrer\">propriet\u00e0 CSS aspect-ratio<\/a> per assicurare che lo spazio appropriato sia riservato sulla pagina prima che l&#8217;immagine venga scaricata.<\/li>\n<\/ol>\n<p>Un CDN specializzato in immagini pu\u00f2 gestire parte di questo lavoro per voi. Per altri consigli, date un\u2019occhiata alla nostra guida su come <a href=\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-le-immagini-per-web-e-prestazioni\/\">ottimizzare le immagini per il web<\/a>.<\/p>\n<h3>Rimuovere il CSS Inutilizzato<\/h3>\n<p>Gli stili pi\u00f9 veloci sono quelli che non avete mai bisogno di caricare o visualizzare! Provate a <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-css\/\">rimuovere\/modificare qualsiasi codice CSS<\/a> di cui non avete pi\u00f9 bisogno, come quello per le pagine legacy, i widget o i framework. Questo pu\u00f2 essere difficile su siti pi\u00f9 grandi e non \u00e8 sempre chiaro se un particolare insieme di stili sia essenziale o meno.<\/p>\n<p>I seguenti strumenti analizzano l&#8217;uso dell&#8217;HTML e dei CSS al momento della costruzione o scansionando gli URL per identificare il codice ridondante. Questo non \u00e8 sempre adeguato, quindi potete impostare ulteriori configurazioni per assicurare che gli stili attivati da JavaScript e dalle interazioni dell&#8217;utente siano elencati:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/uncss\/uncss\" target=\"_blank\" rel=\"noopener noreferrer\">UnCSS<\/a><\/li>\n<li><a href=\"https:\/\/unused-css.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">UnusedCSS<\/a><\/li>\n<li><a href=\"https:\/\/purgecss.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">PurgeCSS<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/purifycss\/purifycss\" target=\"_blank\" rel=\"noopener noreferrer\">PurifyCSS<\/a><\/li>\n<\/ul>\n<p>C&#8217;\u00e8 un&#8217;opzione migliore: dividere i CSS in file separati con chiari livelli di responsabilit\u00e0 e documentati di conseguenza. Rimuovere gli stili non necessari diventa quindi molto pi\u00f9 facile.<\/p>\n<h2>Ottimizzare le Prestazioni di Caricamento dei CSS<\/h2>\n<p>Non tutti i CSS vengono caricati allo stesso modo. L&#8217;umile tag <code>&lt;link&gt;<\/code> contiene una serie di opzioni e stranezze che non sono sempre logiche.<\/p>\n<h3>Ottimizzare l&#8217;Uso dei Font Web<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/migliori-google-fonts\/\">Google Fonts<\/a> e librerie di font simili hanno rivoluzionato i <a href=\"https:\/\/kinsta.com\/it\/blog\/font-html\/\">font web<\/a>, ma poche righe di codice di font possono incorrere in centinaia di kilobyte di larghezza di banda.<\/p>\n<p>Ecco i nostri suggerimenti per l&#8217;ottimizzazione:<\/p>\n<ol>\n<li><strong>Caricare solo i font di cui avete bisogno: <\/strong>rimuovete font che non state usando e verificate che non siano necessari nuovi font.<\/li>\n<li><strong>Caricare solo i pesi e gli stili di cui avete bisogno: <\/strong>la maggior parte delle librerie di font pu\u00f2 limitare il download a certi set di caratteri (come solo il latino), pesi (spessori) e corsivi (inclinazioni). I browser possono visualizzare automaticamente gli stili mancanti, anche se i risultati possono essere scarsi.<\/li>\n<li><strong>Limitare i caratteri richiesti:<\/strong> i font usati di rado possono essere limitati a caratteri specifici. Per esempio, il titolo &#8220;tutorial CSS&#8221; in Open Sans pu\u00f2 essere definito aggiungendo un parametro <code>&text=<\/code> alla stringa di ricerca dei font di Google: <code>fonts.googleapis.com\/css?family=Open+Sans&text=CStuorial<\/code><\/li>\n<li><strong>Considerare i font variabili: <\/strong>i font variabili definiscono una grande variet\u00e0 di stili, pesi e corsivi usando l&#8217;interpolazione vettoriale. Il file del font \u00e8 un po&#8217; pi\u00f9 grande, ma ne serve solo uno piuttosto che diversi. Il <a href=\"https:\/\/www.recursive.design\/\" target=\"_blank\" rel=\"noopener noreferrer\">font ricorsivo<\/a> dimostra la flessibilit\u00e0 dei font variabili.<\/li>\n<li><strong>Caricare i font dal vostro server locale: <\/strong><a href=\"https:\/\/kinsta.com\/blog\/local-fonts\/\">ospitare in locale i font<\/a> \u00e8 pi\u00f9 efficiente dell&#8217;utilizzo di una libreria di font. Servono meno ricerche DNS e potete limitare il download a <a href=\"https:\/\/caniuse.com\/woff2\" target=\"_blank\" rel=\"noopener noreferrer\">WOFF2, che tutti i browser moderni supportano<\/a>. I browser pi\u00f9 vecchi (stiamo guardando te, Internet Exploere) possono ripiegare su un font OS.<\/li>\n<li><strong>Considerare i font OS: <\/strong>quel font web da 500 kB pu\u00f2 sembrare fantastico, ma qualcuno se ne accorgerebbe se voi passaste ai popolari Helvetica, Arial, Georgia o Verdana? I <a href=\"https:\/\/kinsta.com\/it\/blog\/font-web-safe\/\">font web-safe<\/a> o OS sono un modo semplice per aumentare le prestazioni.<\/li>\n<\/ol>\n<h3>Usare un&#8217;Opzione di Caricamento dei Font Appropriata<\/h3>\n<p>I font web possono richiedere alcuni secondi per essere scaricati ed elaborati. Il browser si comporta in uno dei due modi:<\/p>\n<ol>\n<li><strong>Mostrare un Flash of Unstyled Text (FOUT): <\/strong>il primo font di ripiego disponibile viene usato inizialmente ma viene sostituito una volta che il font web \u00e8 pronto.<\/li>\n<li><strong>Mostrare un Flash of Invisible Text (FOIT): <\/strong>nessun testo viene visualizzato fino a quando il web font non \u00e8 pronto. Questo \u00e8 il processo predefinito nei browser moderni, che tipicamente aspettano tre secondi prima di tornare a un font di ripiego.<\/li>\n<\/ol>\n<p>Nessuno dei due comportamenti \u00e8 ideale. La propriet\u00e0 CSS <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@font-face\/font-display\" target=\"_blank\" rel=\"noopener noreferrer\">font-display<\/a> e il parametro Google Font &#038; display = possono selezionare un&#8217;opzione alternativa:<\/p>\n<ul>\n<li><strong>auto:<\/strong> il comportamento predefinito del browser (di solito FOIT).<\/li>\n<li><strong>block:<\/strong> FOIT. Il testo \u00e8 invisibile fino a tre secondi. Non c&#8217;\u00e8 un cambio di font, ma il testo pu\u00f2 impiegare del tempo per apparire.<\/li>\n<li><strong>swap:<\/strong> FOUT. Il primo fallback viene utilizzato fino a quando il font web non \u00e8 disponibile. Il testo \u00e8 immediatamente leggibile, ma l&#8217;effetto del cambio di font pu\u00f2 essere stridente. <a href=\"https:\/\/meowni.ca\/font-style-matcher\/\" target=\"_blank\" rel=\"noopener noreferrer\">Font Style Matcher<\/a> pu\u00f2 essere usato per definire un fallback di dimensioni simili.<\/li>\n<li><strong>fallback:<\/strong> un compromesso tra FOIT e FOUT. Il testo \u00e8 invisibile per un breve periodo (tipicamente 100 ms), poi viene usato il primo fallback fino a quando il font web \u00e8 disponibile.<\/li>\n<li><strong>optional:<\/strong> simile a fallback, eccetto che non si verifica alcuno scambio di font. Il web font viene utilizzato solo se \u00e8 disponibile entro il periodo iniziale. La visualizzazione della vostra prima pagina mostrer\u00e0 probabilmente un font di fallback, mentre le visualizzazioni successive useranno il font web scaricato e memorizzato nella cache.<\/li>\n<\/ul>\n<p>L&#8217;utilizzo di swap, fallback, o optional pu\u00f2 offrire un aumento delle prestazioni percepite.<\/p>\n<h3>Evitare CSS @import<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@import\">L&#8217;at-rule @import<\/a> permette ai file CSS di essere inclusi in altri:<\/p>\n<pre><code class=\"language-css\">\/* main.css *\/\n@import url(\"reset.css\");\n@import url(\"grid.css\");\n@import url(\"widget.css\");<\/code><\/pre>\n<p>Questo sembra un modo efficace per caricare componenti e font pi\u00f9 piccoli. Sfortunatamente, ogni @import blocca il rendering e ogni file deve essere caricato e analizzato in serie.<\/p>\n<p>Molteplici tag <code>&lt;link&gt;<\/code> all&#8217;interno dell&#8217;HTML sono pi\u00f9 efficienti e caricano i file CSS in parallelo:<\/p>\n<pre><code class=\"language-html\">&lt;link rel=\"stylesheet\" href=\"reset.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"grid.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"widget.css\"&gt;<\/code><\/pre>\n<p>Detto questo, \u00e8 meglio\u2026<\/p>\n<h3>Concatenare e Minimizzare i CSS<\/h3>\n<p>I moderni strumenti di compilazione, i preprocessori CSS come Sass e i <a href=\"https:\/\/kinsta.com\/it\/blog\/combinare-css-esterni\/\">plugin di WordPress possono combinare tutti i partial in un unico grande file CSS<\/a>. Gli spazi bianchi non necessari, i commenti e i caratteri vengono poi rimossi per ridurre la dimensione del file al minimo.<\/p>\n<p>I file multipli diventano meno problematici in termini di prestazioni con HTTP\/2 <a href=\"https:\/\/kinsta.com\/it\/blog\/http3\/\">e versioni superiori<\/a>, ma un singolo file richiede solo un&#8217;intestazione e pu\u00f2 essere gzippato e messo in cache in modo pi\u00f9 efficiente.<\/p>\n<p>I file CSS separati sono pratici solo quando avete uno o pi\u00f9 fogli di stile che vengono cambiati frequentemente, forse diverse volte a settimana. Anche allora, il codice CSS pi\u00f9 statico pu\u00f2 essere combinato in un unico file.<\/p>\n<p>I <a href=\"https:\/\/kinsta.com\/it\/prezzi\/?plan=visits-business1\">clienti di Kinsta<\/a> possono accedere alla <a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/wordpress-cdn\/kinsta-cdn\/#code-minification-1\">funzione di minificazione del codice<\/a> nel loro <a href=\"https:\/\/kinsta.com\/it\/mykinsta\/\">cruscotto MyKinsta<\/a>. La funzione consente ai clienti di attivare la minificazione automatica di CSS e JavaScript con un semplice clic. Ci\u00f2 contribuisce a velocizzare un sito senza alcuno sforzo manuale.<\/p>\n<h3>Evitare la Codifica Base64<\/h3>\n<p>Gli <a href=\"https:\/\/jpillora.com\/base64-encoder\/\" target=\"_blank\" rel=\"noopener noreferrer\">strumenti possono codificare le immagini in stringhe base64<\/a>, che potete usare come URI di dati nei tag HTML <code>&lt;img&gt;<\/code> e negli sfondi CSS:<\/p>\n<pre><code class=\"language-css\">.background {\n  background-image: url('data:image\/jpg;base64,ABC123...');\n}<\/code><\/pre>\n<p>Questo riduce il numero di richieste HTTP, ma danneggia le prestazioni dei CSS:<\/p>\n<ul>\n<li>Le stringhe base64 possono essere il 30% pi\u00f9 grandi del loro equivalente binario.<\/li>\n<li>I browser devono decodificare la stringa prima che un&#8217;immagine possa essere utilizzata.<\/li>\n<li>Alterare un pixel dell&#8217;immagine invalida l&#8217;intero file CSS.<\/li>\n<\/ul>\n<p>Considerate la codifica base64 solo se state usando immagini molto piccole, che cambiano raramente, dove la stringa risultante non \u00e8 significativamente pi\u00f9 lunga di un URL.<\/p>\n<p>Detto questo, potete codificare in UTF8 le icone SVG riutilizzabili, per esempio:<\/p>\n<pre><code class=\"language-css\">.svgbackground {\n  background-image: url('data:image\/svg+xml;utf8,&lt;svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 600 600\"&gt;&lt;circle cx=\"300\" cy=\"300\" r=\"150\" stroke-width=\"3\" stroke=\"#f00\" fill=\"#ff0\" \/&gt;&lt;\/svg&gt;');\n}<\/code><\/pre>\n<h3>Rimuovere gli Hack CSS e i Fallback di IE<\/h3>\n<p>A meno che non siate sfortunati e abbiate un&#8217;alta percentuale di utenti Internet Explorer, i fogli di stile condizionali e gli hack di IE possono essere rimossi dal vostro CSS. Nella maggior parte dei casi, gli utenti IE vedranno ancora <em>qualcosa<\/em>, specialmente se usate un design mobile-first che mostra una vista lineare pi\u00f9 semplice per impostazione predefinita. Il risultato potrebbe non essere bello e non sar\u00e0 perfetto, ma spenderete meglio il vostro budget di sviluppo considerando l&#8217;accessibilit\u00e0 per tutti gli utenti.<\/p>\n<h3>Precaricare i File CSS<\/h3>\n<p>Il tag <code>&lt;link&gt;<\/code> fornisce un <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTML\/Preloading_content\">attributo opzionale di precaricamento<\/a> che pu\u00f2 iniziare un download immediatamente piuttosto che aspettare il vero riferimento nell&#8217;HTML:<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;My page&lt;\/title&gt;\n  &lt;!-- preload styles --&gt;\n  &lt;link rel=\"preload\" href=\"\/css\/main.css\" as=\"style\" \/&gt;\n  &lt;!-- lots more code --&gt;\n  &lt;!-- load preloaded styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\" \/&gt;<\/code><\/pre>\n<p>Questo \u00e8 particolarmente vantaggioso in WordPress e in altri CMS dove un plugin potrebbe aggiungere un foglio di stile pi\u00f9 in basso nella pagina.<\/p>\n<h3>Utilizzare il CSS Critico Inline<\/h3>\n<p>Gli strumenti di analisi possono suggerirvi di &#8220;inserire inline i CSS critici&#8221; o &#8220;ridurre i fogli di stile che bloccano il rendering&#8221;. Questo migliora le prestazioni perch\u00e9:<\/p>\n<ol>\n<li>Identifica gli stili essenziali usati dagli elementi above the fold (quelli visibili quando la pagina viene caricata).<\/li>\n<li>Inserisce il CSS critico in un tag <code>&lt;style&gt;<\/code> nel vostro <code>&lt;head&gt;<\/code><\/li>\n<li>Carica il CSS rimanente in modo asincrono per evitare il blocco del rendering. Questo si pu\u00f2 realizzare caricando il foglio di stile in uno stile &#8220;print&#8221; a cui il browser d\u00e0 una priorit\u00e0 inferiore. JavaScript poi lo commuta in uno stile media &#8220;all&#8221; una volta che la pagina \u00e8 stata caricata (un <code>&lt;noscript&gt;<\/code> assicura che il CSS funzioni se JavaScript non \u00e8 disponibile):<\/li>\n<\/ol>\n<pre><code class=\"language-html\">&lt;style&gt;\n\/* critical styles *\/\nbody { font-family: sans-serif; color: #111; }\n&lt;\/style&gt;\n&lt;!-- load remaining styles --&gt;\n&lt;link rel=\"stylesheet\"\n     href=\"\/css\/main.css\"\n    media=\"print\"\n   onload=\"this.media='all'\"&gt;\n&lt;noscript&gt;\n  &lt;link rel=\"stylesheet\" href=\"\/css\/main.css\"&gt;\n&lt;\/noscript&gt;<\/code><\/pre>\n<p>Strumenti come <a href=\"https:\/\/github.com\/addyosmani\/critical\">critical<\/a> e <a href=\"https:\/\/github.com\/filamentgroup\/criticalCSS\">criticalCSS<\/a> possono aiutare a estrarre gli stili per gli elementi in-view.<\/p>\n<p>La tecnica migliora notevolmente le prestazioni e aumenta i punteggi di controllo. Siti o applicazioni con interfacce coerenti dovrebbero essere pi\u00f9 semplici da implementare, ma potrebbe essere pi\u00f9 difficile altrove:<\/p>\n<ul>\n<li>Uno strumento di costruzione \u00e8 essenziale per tutti i siti tranne i pi\u00f9 semplici.<\/li>\n<li>Il significato di \u201cfold\u201d cambia a seconda del dispositivo.<\/li>\n<li>I siti potrebbero avere una variet\u00e0 di layout che richiedono diversi CSS critici.<\/li>\n<li>Gli strumenti CSS critici possono lottare con framework specifici, HTML generato lato client e contenuti dinamici.<\/li>\n<li>La tecnica beneficia principalmente il caricamento della prima pagina. I CSS vengono memorizzati nella cache per le pagine successive, quindi gli stili aggiuntivi delineati aumenteranno il peso della pagina.<\/li>\n<\/ul>\n<h3>Usare il Rendering Media Query<\/h3>\n<p>Un singolo file concatenato e minificato andr\u00e0 a beneficio della maggior parte dei siti, ma i siti che richiedono una quantit\u00e0 significativa di stili a schermo pi\u00f9 grande potrebbero dividere i file CSS e caricarli usando una media query:<\/p>\n<pre><code class=\"language-html\">&lt;!-- core styles loaded on all devices --&gt;\n&lt;link rel=\"stylesheet\" href=\"core.css\"&gt;\n&lt;!-- served to screens at least 40em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 40em)\" href=\"40em.css\"&gt;\n&lt;!-- served to screens at least 80em wide --&gt;\n&lt;link rel=\"stylesheet\" media=\"(min-width: 80em)\" href=\"80em.css\"&gt;<\/code><\/pre>\n<p>Questo esempio presuppone una metodologia mobile-first. I dispositivi mobili caricano <strong>core.css<\/strong> ma potrebbero non aver bisogno di scaricare o analizzare i fogli di stile rimanenti.<\/p>\n<h3>Usare il Rendering Progressivo<\/h3>\n<p>Il rendering progressivo \u00e8 una tecnica che definisce fogli di stile individuali per pagine o componenti separati. Pu\u00f2 avvantaggiare siti molto grandi dove le singole pagine sono costruite da una vasta gamma di componenti.<\/p>\n<p>Ogni file CSS viene caricato immediatamente prima che un componente sia referenziato nell&#8217;HTML:<\/p>\n<pre><code class=\"language-html\">&lt;head&gt;\n  &lt;!-- core styles --&gt;\n  &lt;link rel=\"stylesheet\" href=\"core.css\" \/&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;!-- header --&gt;\n  &lt;link rel=\"stylesheet\" href=\"header.css\" \/&gt;\n  &lt;header&gt;...&lt;\/header&gt;\n  &lt;!-- primary content --&gt;\n  &lt;link rel=\"stylesheet\" href=\"main.css\" \/&gt;\n  &lt;main&gt;\n    &lt;!-- widget styling --&gt;\n    &lt;link rel=\"stylesheet\" href=\"widget.css\" \/&gt;\n    &lt;div class=\"mywidget&gt;...&lt;\/div&gt;\n  &lt;\/main&gt;\n  &lt;!-- footer --&gt;\n  &lt;link rel=\"stylesheet\" href=\"footer.css\" \/&gt;\n  &lt;footer&gt;...&lt;\/footer&gt;\n&lt;\/body&gt;<\/code><\/pre>\n<p>Questo funziona bene nella maggior parte dei browser. (Safari mostra una pagina bianca fino a quando tutto il CSS non viene caricato, ma non dovrebbe essere molto peggio di un singolo foglio di stile grande.)<\/p>\n<p>L&#8217;adozione dei componenti web incoraggia anche l&#8217;uso di stili con attributo \u201cscoped\u201d che vengono caricati durante la visualizzazione dell&#8217;elemento personalizzato.<\/p>\n<h2>Ottimizzare le Prestazioni CSS<\/h2>\n<p>Le tecniche e le propriet\u00e0 CSS mettono a dura prova il browser, la CPU, la memoria, la larghezza di banda e altre risorse. I seguenti suggerimenti possono aiutarvi a evitare elaborazioni inutili e prestazioni lente.<\/p>\n<h3>Adottare le Tecniche di Layout Moderne (Grid e Flexbox)<\/h3>\n<p>I layout basati su float sono difficili da creare, usano numerose propriet\u00e0, richiedono continui aggiustamenti dei margini e del padding, devono essere gestiti tramite le media query e richiedono una notevole elaborazione da parte del browser. Sono stati l&#8217;unico metodo di layout valido per molti anni, ma non sono pi\u00f9 necessari. Usate uno dei due:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/it\/blog\/responsive-web-design\/#flexbox-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Flexbox<\/a> per layout monodimensionali che potrebbero avvolgere la riga successiva. \u00c8 ideale per menu, gallerie di immagini, schede, ecc.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/it\/blog\/responsive-web-design\/#size-layout-elements-with-percentages-or-create-a-css-grid-layout\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Grid<\/a> per layout bidimensionali con righe e colonne esplicite. \u00c8 ideale per i layout di pagina.<\/li>\n<\/ul>\n<p>Entrambi sono pi\u00f9 semplici da sviluppare, usano meno codice, vengono visualizzati pi\u00f9 velocemente e si adattano a qualsiasi dimensione dello schermo senza media queries.<\/p>\n<p>I browser molto vecchi non riconosceranno le moderne propriet\u00e0 flexbox e grid, quindi ogni elemento diventa un blocco. Mostrateli in un semplice layout lineare da mobile: <em>non c&#8217;\u00e8 bisogno di emulare il design con fallback basati su float<\/em>.<\/p>\n<h3>Sostituite le Immagini con Gradienti ed Effetti CSS<\/h3>\n<p>Dove possibile, optate per il codice CSS piuttosto che per le immagini. Sperimentate con gradienti, bordi, raggi, ombre, filtri, modalit\u00e0 di fusione, maschere, ritaglio ed effetti pseudo-elemento per riutilizzare o sostituire le immagini esistenti.<\/p>\n<p>Gli effetti CSS usano molto meno banda, sono pi\u00f9 facili da modificare e di solito possono essere animati.<\/p>\n<h3>Evitare l&#8217;Uso Eccessivo di Propriet\u00e0 Costose<\/h3>\n<p>Anche se potreste gi\u00e0 avere un codice dichiarativo conciso, alcuni CSS richiedono pi\u00f9 elaborazione di altri. Le seguenti propriet\u00e0 innescano calcoli di painting che possono essere costosi se usati in eccesso:<\/p>\n<ul>\n<li><code>position: fixed<\/code><\/li>\n<li><code>border-radius<\/code><\/li>\n<li><code>box-shadow<\/code><\/li>\n<li><code>text-shadow<\/code><\/li>\n<li><code>opacity<\/code><\/li>\n<li><code>transform<\/code><\/li>\n<li><code>filter<\/code><\/li>\n<li><code>backdrop-filter<\/code><\/li>\n<li><code>background-blend-mode<\/code><\/li>\n<\/ul>\n<h3>Usare Transizioni e Animazioni CSS Quando Possibile<\/h3>\n<p>Le transizioni e le animazioni CSS saranno sempre pi\u00f9 fluide degli effetti alimentati da JavaScript, che modificano propriet\u00e0 simili. Non saranno processati nei browser molto vecchi ma, dato che \u00e8 probabile che questi girino su dispositivi meno capaci, \u00e8 meglio cos\u00ec.<\/p>\n<p>Tuttavia, evitate le eccessive animazioni. Gli effetti dovrebbero migliorare l&#8217;esperienza dell&#8217;utente senza influenzare negativamente le prestazioni o farvi venire il mal di mare. Verificate la media query <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\" target=\"_blank\" rel=\"noopener noreferrer\">prefers-reduced-motion<\/a> e disabilitate le animazioni quando necessario.<\/p>\n<h3>Evitare di Animare le Propriet\u00e0 che Innescano un Ri-Layout<\/h3>\n<p>Alterare le dimensioni di un elemento (larghezza, altezza, padding, bordo) o la posizione (superiore, inferiore, sinistra, destra, margine) pu\u00f2 richiedere il ri-layout dell&#8217;intera pagina a ogni fotogramma di animazione. Le propriet\u00e0 pi\u00f9 efficienti da animare sono:<\/p>\n<ul>\n<li><strong><code>opacity<\/code><\/strong>.<\/li>\n<li><strong><code>filter<\/code><\/strong>: sfocatura, contrasto, ombra e altri effetti.<\/li>\n<li><strong><code>transform<\/code><\/strong>: per tradurre (spostare), scalare o ruotare un elemento.<\/li>\n<\/ul>\n<p>I browser possono usare la GPU con accelerazione hardware per renderizzare questi effetti nel proprio livello, quindi solo la fase di composizione \u00e8 interessata.<\/p>\n<p>Se dovete animare altre propriet\u00e0, potete migliorare le prestazioni togliendo l&#8217;elemento dal flusso della pagina con position: absolute.<\/p>\n<h3>Attenzione ai Selettori Complessi<\/h3>\n<p>I browser analizzano rapidamente i selettori CSS pi\u00f9 complessi, ma semplificarli riduce le dimensioni dei file e migliora le prestazioni. I selettori complessi sono spesso generati quando si creano strutture profondamente annidate nei preprocessori CSS come Sass.<\/p>\n<h3>Indicare Quali Elementi Cambieranno<\/h3>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/will-change\" target=\"_blank\" rel=\"noopener noreferrer\">propriet\u00e0 CSS will-change<\/a> vi permette di avvertire come un elemento verr\u00e0 cambiato o animato in modo che il browser possa fare delle ottimizzazioni in anticipo:<\/p>\n<pre><code class=\"language-css\">.myelement {\n  will-change: transform, opacity;\n}<\/code><\/pre>\n<p>Qualsiasi numero di valori separati da virgola pu\u00f2 essere definito, ma la propriet\u00e0 dovrebbe essere usata solo come ultima risorsa per risolvere problemi di prestazioni noti. Non dovreste applicarla a troppi elementi e assicurarvi di darle tempo sufficiente per inizializzarsi.<\/p>\n<h3>Considerare il Containment CSS<\/h3>\n<p>Il <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/CSS_Containment\" target=\"_blank\" rel=\"noopener noreferrer\">containment<\/a> \u00e8 una nuova caratteristica CSS che pu\u00f2 migliorare le prestazioni permettendovi di identificare i sottoinsiemi isolati di una pagina. Il browser pu\u00f2 ottimizzare l&#8217;elaborazione rendendo, o <em>non <\/em>rendendo, uno specifico blocco di contenuto DOM.<\/p>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/contain\" target=\"_blank\" rel=\"noopener noreferrer\">propriet\u00e0 contain<\/a> accetta uno o pi\u00f9 dei seguenti valori in una lista separata da spazi:<\/p>\n<ul>\n<li><strong><code>none<\/code><\/strong>: il containment non viene applicato.<\/li>\n<li><strong><code>layout<\/code><\/strong>: il layout dell&#8217;elemento \u00e8 isolato dal resto della pagina, il suo contenuto non influenzer\u00e0 altri elementi.<\/li>\n<li><strong><code>paint<\/code><\/strong>: i figli dell&#8217;elemento non sono visualizzati al di fuori del suo confine.<\/li>\n<li><strong><code>size<\/code><\/strong>: la dimensione dell&#8217;elemento pu\u00f2 essere determinata senza controllare gli elementi figli, le dimensioni sono indipendenti dal contenuto.<\/li>\n<\/ul>\n<p>Sono disponibili anche due valori speciali:<\/p>\n<ul>\n<li><strong><code>strict<\/code><\/strong>: applica tutte le regole di containment (eccetto \u201cnone\u201d).<\/li>\n<li><strong><code>content<\/code><\/strong>: applica il layout e il colore.<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Una pagina ha una lista <code>&lt;ul&gt;<\/code> con <code>contain: strict<\/code>; applicato. Se cambiate il contenuto di qualsiasi <code>&lt;li&gt;<\/code> figlio, il browser non ricalcoler\u00e0 la dimensione o la posizione di quell&#8217;elemento, di altri elementi della lista o di qualsiasi altro elemento della pagina.<\/p>\n<\/aside>\n\n<p>Il Containment CSS \u00e8 <a href=\"https:\/\/caniuse.com\/mdn-css_properties_contain\" target=\"_blank\" rel=\"noopener noreferrer\">supportato nella maggior parte dei browser moderni<\/a>. Non viene supportato in Safari o nelle applicazioni pi\u00f9 vecchie, ma il containment pu\u00f2 comunque essere usato anche in quel caso perch\u00e9 il browser ignorer\u00e0 semplicemente la propriet\u00e0.<\/p>\n<h3>Reagire all&#8217;Intestazione Save-Data<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTTP\/Headers\/Save-Data\" target=\"_blank\" rel=\"noopener noreferrer\">Save-Data<\/a> \u00e8 un&#8217;intestazione di richiesta HTTP che indica che l&#8217;utente ha richiesto dati ridotti. Pu\u00f2 essere etichettato come modalit\u00e0 &#8220;Lite&#8221; o &#8220;Turbo&#8221; in alcuni browser.<\/p>\n<p>Quando \u00e8 abilitata, un&#8217;intestazione <code>Save-Data<\/code> viene inviata con ogni richiesta del browser:<\/p>\n<pre><code class=\"language-text\">GET \/main.css HTTP\/1.0\nHost: site.com\nSave-Data: on<\/code><\/pre>\n<p>Il server pu\u00f2 rispondere di conseguenza quando viene rilevato Save-Data. Nel caso dei CSS, potrebbe inviare un layout lineare pi\u00f9 semplice simile a quello dei cellulari, usare un font OS, passare a colori a blocchi o caricare sfondi di immagini a bassa risoluzione.<\/p>\n<p>Tenete presente che il server dovrebbe restituire la seguente intestazione sulle richieste modificate per assicurare che il contenuto minimo non sia memorizzato nella cache e riutilizzato quando l&#8217;utente spegne la modalit\u00e0 Lite\/Turbo:<\/p>\n<pre><code class=\"language-text\">Vary: Accept-Encoding, Save-Data<\/code><\/pre>\n<p>L&#8217;intestazione pu\u00f2 anche essere rilevata da JavaScript lato client. Il seguente codice aggiunge una classe bestUX all&#8217;elemento <code>&lt;html&gt;<\/code> quando Save-Data <em>non<\/em> \u00e8 abilitato:<\/p>\n<pre><code class=\"language-js\">if ('connection' in navigator && !navigator.connection.saveData) {\n  document.documentElement.classList.add('bestUX');\n}<\/code><\/pre>\n<p>I fogli di stile possono quindi reagire di conseguenza senza alcuna manipolazione del server:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n.bestUX header {\n  background-image: url(\"hero.jpg\");\n}<\/code><\/pre>\n<p>La <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-data\" target=\"_blank\" rel=\"noopener noreferrer\">media query prefers-reduced-data<\/a> offre un&#8217;opzione CSS-only come alternativa, anche se questa non \u00e8 supportata in nessun browser nel momento in cui scriviamo questo articolo:<\/p>\n<pre><code class=\"language-css\">\/* no hero image by default *\/\nheader {\n  background-color: #abc;\n  background-image: none;\n}\n\/* hero image when no Save-Data *\/\n@media (prefers-reduced-data: no-preference) {\n  header {\n    background-image: url(\"hero.jpg\");\n  }\n}<\/code><\/pre>\n\n<h2>Riepilogo<\/h2>\n<p>Ci sono molte opzioni per ottimizzare le prestazioni dei CSS, ma per i nuovi progetti, considerate le seguenti pratiche:<\/p>\n<ol>\n<li><strong>Usare un <a href=\"https:\/\/kinsta.com\/it\/blog\/google-mobile-first-index\/\">approccio mobile-first<\/a><\/strong>: codificate prima il layout mobile pi\u00f9 semplice, poi aggiungete miglioramenti man mano che lo spazio dello schermo e le funzionalit\u00e0 del browser aumentano.<\/li>\n<li><strong>Dividere i CSS in file separati con responsabilit\u00e0 identificabili:<\/strong> un preprocessore CSS o un plugin <a href=\"https:\/\/kinsta.com\/it\/blog\/combinare-css-esterni\/\">CMS pu\u00f2 combinare i parziali CSS in un unico file<\/a>.<\/li>\n<li><strong>Aggiungere un passo di compilazione:<\/strong> sono disponibili degli strumenti che possono automaticamente limare il codice, identificare i problemi, concatenare, minimizzare, ridurre le dimensioni delle immagini e altro. L&#8217;automazione rende la vita pi\u00f9 facile, ed \u00e8 meno probabile dimenticare un passaggio di ottimizzazione.<\/li>\n<li><strong>Documentare i vostri fogli di stile:<\/strong> una guida di stile con esempi documentati render\u00e0 il vostro codice pi\u00f9 facile da scegliere e mantenere. Sarete in grado di identificare e rimuovere il vecchio CSS senza sudare troppo.<\/li>\n<\/ol>\n<p>Infine, <a href=\"https:\/\/kinsta.com\/it\/blog\/miglior-linguaggio-di-programmazione\/#html-and-css\">imparate il CSS<\/a>! Pi\u00f9 ne sapete, meno codice dovrete scrivere e pi\u00f9 veloce diventer\u00e0 la vostra applicazione web. Migliorerete molto il vostro lavoro indipendentemente dalle piattaforme e dai framework che usate.<\/p>\n<p><em>Quali altri consigli avete per ottimizzare le prestazioni dei CSS? Condivideteli nella sezione dei commenti!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anche nel 2021, le prestazioni web rimangono un problema. Secondo HTTP Archive, una pagina media richiede un download di 2 MB, fa pi\u00f9 di 60 richieste &#8230;<\/p>\n","protected":false},"author":188,"featured_media":47981,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[24367,15892],"topic":[25869],"class_list":["post-47978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-css","tag-web-development","topic-prestazioni-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito<\/title>\n<meta name=\"description\" content=\"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito\" \/>\n<meta property=\"og:description\" content=\"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-30T07:43:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-28T06:15:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Craig Buckler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"31 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito\",\"datePublished\":\"2021-09-30T07:43:12+00:00\",\"dateModified\":\"2024-05-28T06:15:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\"},\"wordCount\":5219,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\",\"keywords\":[\"css\",\"web development\"],\"articleSection\":[\"Tutorial sulle Performance di WordPress\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\",\"name\":\"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\",\"datePublished\":\"2021-09-30T07:43:12+00:00\",\"dateModified\":\"2024-05-28T06:15:39+00:00\",\"description\":\"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Come ottimizzare i CSS per le massime prestazioni del sito\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prestazioni di WordPress\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/prestazioni-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g\",\"caption\":\"Craig Buckler\"},\"description\":\"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.\",\"sameAs\":[\"https:\/\/craigbuckler.com\/\",\"https:\/\/www.linkedin.com\/in\/craigbuckler\",\"https:\/\/x.com\/craigbuckler\",\"https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito","description":"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/","og_locale":"it_IT","og_type":"article","og_title":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito","og_description":"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.","og_url":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2021-09-30T07:43:12+00:00","article_modified_time":"2024-05-28T06:15:39+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Craig Buckler","Tempo di lettura stimato":"31 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito","datePublished":"2021-09-30T07:43:12+00:00","dateModified":"2024-05-28T06:15:39+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/"},"wordCount":5219,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","keywords":["css","web development"],"articleSection":["Tutorial sulle Performance di WordPress"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/","url":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/","name":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","datePublished":"2021-09-30T07:43:12+00:00","dateModified":"2024-05-28T06:15:39+00:00","description":"I CSS possono sembrare innocenti, ma a volte richiedono una pesante elaborazione. Ecco una guida per ottimizzare i CSS e migliorare le prestazioni del sito.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2021\/09\/ottimizzare-css.jpeg","width":1460,"height":730,"caption":"Come ottimizzare i CSS per le massime prestazioni del sito"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzare-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Prestazioni di WordPress","item":"https:\/\/kinsta.com\/it\/argomenti\/prestazioni-wordpress\/"},{"@type":"ListItem","position":3,"name":"Come Ottimizzare i CSS per Ottenere le Massime Prestazioni dal Sito"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e76011e66720bd2e3e24e164aa6f0b2?s=96&d=mm&r=g","caption":"Craig Buckler"},"description":"Freelance UK web developer, writer, and speaker. Has been around a long time and rants about standards and performance.","sameAs":["https:\/\/craigbuckler.com\/","https:\/\/www.linkedin.com\/in\/craigbuckler","https:\/\/x.com\/craigbuckler","https:\/\/www.youtube.com\/channel\/UCQwdl5oBTWGhifS6bRGADMQ"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=47978"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47978\/revisions"}],"predecessor-version":[{"id":77856,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/47978\/revisions\/77856"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/de"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/translations\/nl"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/47978\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/47981"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=47978"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=47978"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=47978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}