2026-03-24 · Redazione Baduno · 30 blog.readMin · Blog & Conoscenza
Tempi di caricamento di siti web multilingue: font, immagini, strategie edge
I siti web multilingue affrontano sfide specifiche di tempo di caricamento: font, immagini e distribuzione geografica influiscono direttamente sull'esperienza utente. La nostra guida mostra come ottimizzare le prestazioni con subsetting, strategie edge e caching mirato, senza compromettere la localizzazione. Scopri come misurare i tempi di caricamento in base alla lingua ed evitare errori comuni.

Fondamenti: Perché il tempo di caricamento è particolarmente importante per i siti web multilingue
Il tempo di caricamento di un sito web influisce notevolmente sull'esperienza utente e sul tasso di conversione. Per i siti web multilingue, si aggiunge una complessità ulteriore: i visitatori provenienti da diverse regioni si aspettano non solo contenuti nella loro lingua, ma anche un caricamento rapido che corrisponda alle condizioni locali. In pratica, anche un ritardo di pochi secondi porta a un aumento della frequenza di rimbalzo, specialmente sui dispositivi mobili, che dominano in molti mercati con connessioni Internet più deboli.
Un aspetto centrale è la distribuzione geografica degli utenti. Un sito web ospitato centralmente può caricare molto più lentamente per gli utenti in regioni lontane. Le Content Delivery Network (CDN) offrono una soluzione memorizzando nella cache le risorse statiche su server in tutto il mondo. Tuttavia, per i siti web multilingue è necessario assicurarsi che la CDN distribuisca correttamente le risorse specifiche per lingua e regione. Inoltre, il server di origine dovrebbe essere posizionato il più vicino possibile ai principali mercati di destinazione.
Un altro punto è la dimensione delle risorse distribuite. I siti web multilingue spesso includono font, immagini e persino varianti di layout diversi. Ogni kilobyte aggiuntivo allunga i tempi di caricamento. Pertanto, è necessaria un'ottimizzazione coerente di tutti i componenti, a partire dalla scelta di formati di file efficienti fino alla minimizzazione delle richieste HTTP. In pratica, si consiglia di misurare regolarmente le prestazioni con strumenti come Lighthouse o WebPageTest, da diverse prospettive geografiche.
Raccomandazione pratica: utilizzare una CDN con server edge nelle regioni delle lingue target. Configurare le regole di caching in modo che i file specifici della lingua (ad esempio, subset di font) vengano memorizzati nella cache separatamente. Eseguire regolarmente test di velocità di caricamento da diversi paesi e documentare i risultati per poter tracciare le ottimizzazioni. Tenere presente che il tempo di caricamento misurato dipende da fattori come il protocollo di rete (HTTP/2, HTTP/3) e i round trip del server – questi dovrebbero essere monitorati.
Font e subsetting: ottimizzazione per sistema di scrittura
I font sono una componente essenziale dell'aspetto visivo di un sito web, ma possono anche incidere notevolmente sui tempi di caricamento. Soprattutto nei siti web multilingue, che devono supportare più sistemi di scrittura come latino, cirillico, arabo o cinese, la dimensione dei file aumenta rapidamente. La chiave per l'ottimizzazione è il subsetting: anziché fornire l'intero font, si caricano solo i caratteri effettivamente utilizzati sulla pagina. Per ogni versione linguistica è possibile creare subset individuali.
Nella pratica, è efficace generare un subset di font separato per ogni lingua. A tal fine, si estrae il set di caratteri effettivamente utilizzato dal contenuto della rispettiva pagina. Strumenti come fonttools (pyftsubset) o servizi online consentono una creazione automatizzata. Assicurarsi di includere anche caratteri speciali, legature e cifre. Per pagine mistilingue (ad esempio, inglese con citazioni francesi), si può utilizzare l'intersezione dei set di caratteri.
Un altro fattore è il formato dei file dei font. Formati moderni come WOFF2 offrono una migliore compressione rispetto a WOFF o TTF. Assicurarsi che il server fornisca correttamente i tipi MIME appropriati e che i font vengano caricati tramite CSS @font-face. Utilizzare font-display: swap per rendere visibile il testo già durante il caricamento del font con un font di fallback di sistema – ciò previene i contenuti invisibili (FOUT).
Raccomandazione pratica: creare per ogni lingua uno script di build automatizzato che generi i subset di font e li collochi nella rispettiva directory linguistica. Utilizzare uno strumento di lookup per estrarre i caratteri utilizzati dall'HTML renderizzato, evitando subset creati manualmente che contengono caratteri non necessari. Testare i tempi di caricamento con e senza subsetting – nella pratica, la dimensione dei file dei font si riduce spesso del 70–90 %. Attenzione agli aspetti legali: verificare le condizioni di licenza dei propri font, poiché alcune limitano il subsetting o lo consentono solo per determinati set di caratteri.

Varianti immagine: immagini specifiche per lingua e formati responsivi
Le immagini spesso costituiscono la maggior parte del volume della pagina. Nei siti web multilingue si aggiungono varianti di immagini specifiche per lingua – come screenshot con testo localizzato, immagini tipiche del paese o grafiche con testi incorporati. Se queste immagini non vengono ottimizzate, i tempi di caricamento si moltiplicano. Il primo passo è scegliere il formato ottimale per ogni immagine: formati moderni come WebP o AVIF offrono una migliore compressione a parità di qualità rispetto a JPEG o PNG. In pratica, WebP si è dimostrato ampiamente compatibile; AVIF offre file ancora più piccoli, ma non è ancora supportato da tutti i browser.
Oltre al formato, la risoluzione gioca un ruolo cruciale. Dovreste fornire più varianti di ogni immagine in dimensioni diverse – ad esempio per desktop, tablet e smartphone. Utilizzate l'attributo srcset nell'HTML in modo che il browser carichi la versione appropriata. Per i siti multilingue si consiglia una struttura di cartelle come /images/de/, /images/fr/, ecc., in cui le immagini localizzate vengono salvate con gli stessi nomi di file. Una tale struttura semplifica la gestione e la memorizzazione nella cache.
Un punto spesso trascurato è il lazy loading. Potete contrassegnare le immagini che appaiono solo nell'area visibile con loading="lazy". Ciò è particolarmente utile per articoli multilingue lunghi. Tuttavia, il lazy loading non dovrebbe essere applicato alle immagini critiche above the fold. Un'altra ottimizzazione è il preloading delle immagini più importanti con rel="preload" nell'header per ridurre i tempi di caricamento della prima immagine.
Raccomandazione pratica: create per ogni lingua uno script di build delle immagini che generi automaticamente varianti WebP e le inserisca nelle cartelle appropriate. Utilizzate uno strumento come ImageMagick o una soluzione cloud che combini conversione di formato e ridimensionamento. Testate i tempi di caricamento con un profilo di rete a banda larga e uno lento (es. 3G) da diverse regioni. Assicuratevi che i testi alternativi delle immagini siano anch'essi specifici per lingua – questo supporta sia l'accessibilità che la SEO. Tenete presenti le note legali: per le immagini con licenza, potreste dover ottenere diritti separati per ogni versione linguistica se il soggetto viene modificato.
Migliorare i tempi di caricamento dei font: preloading, font-display, font critici
Per ottimizzare i tempi di caricamento dei siti web multilingue, è fondamentale gestire i font in modo mirato. Iniziate con il preloading dei font critici – cioè quelli necessari per il rendering immediato del testo nella parte superiore visibile. Utilizzate a tale scopo l'attributo `rel="preload"` nell'intestazione HTML, completato da `as="font"` e dal `type` corretto. Esempio: per una variante latina e una cirillica, precaricate rispettivamente il file subset corretto. Assicuratevi di precaricare solo i sistemi di scrittura della lingua corrente per non sprecare larghezza di banda.
Impostate la proprietà CSS `font-display` su `swap` per i font non critici, in modo da consentire un flash di testo invisibile (FOUT). Per i font critici, `font-display: optional` può essere sensato, poiché il browser decide se il font viene caricato in tempo – altrimenti rimane visibile il font di sistema. Evitate `font-display: block` perché causa lunghi blocchi di testo bianco. Testate nella pratica quale impostazione funziona meglio per le vostre regioni target.
Riducete il numero di stili di font utilizzati per lingua. Spesso sono sufficienti Regular e Bold per il testo e i titoli. Ogni stile aggiuntivo aumenta i tempi di caricamento. Combinate questo con il subsetting: caricate solo i caratteri effettivamente utilizzati nella lingua specifica. Per le lingue con alfabeto latino, il subset è piccolo; per cinese o giapponese dovete valutare attentamente – qui un subset con i 200–500 caratteri più frequenti può ridurre drasticamente la dimensione del file.
Un altro consiglio pratico: utilizzate WOFF2 come formato contenitore, poiché offre la migliore compressione. Configurate font di fallback con dimensioni simili per ridurre al minimo i cambiamenti di layout (CLS). Misurate l'impatto con strumenti come PageSpeed Insights o WebPageTest – ma tenendo conto della posizione geografica dei vostri utenti. Tenete presente che l'ottimizzazione dei font è un processo iterativo: verificate regolarmente se le impostazioni scelte corrispondono ancora alle reali esperienze utente.
Configurazione CDN: server edge e distribuzione geografica per le lingue
Un Content Delivery Network (CDN) è essenziale per i siti web multilingue per ridurre al minimo i tempi di caricamento a livello globale. Configurate il vostro CDN in modo che i server edge siano posizionati nelle regioni in cui si parlano le lingue target. Se ad esempio offrite spagnolo per l'America Latina, i server dovrebbero essere prioritariamente in Brasile, Messico o Argentina. Per il tedesco in Europa, sono indicati server a Francoforte o Londra. La vicinanza geografica riduce notevolmente i tempi di round-trip.
Impostate regole di caching specifiche per lingua: le risorse statiche (CSS, JS, font) possono essere memorizzate nella cache allo stesso modo per tutte le lingue, purché non varino. Per le immagini che contengono sovrapposizioni di testo dipendenti dalla lingua, è necessario utilizzare chiavi di cache diverse. Utilizzate a tal fine l'intestazione `Vary` con `Accept-Language` o, meglio, una chiave di cache personalizzata che derivi l'identificatore della lingua dall'URL. Evitate di memorizzare nella cache i contenuti linguistici dinamici (HTML) tramite CDN se sono personalizzati – oppure impostate TTL molto brevi (ad esempio 5 minuti) per queste pagine.
Una strategia spesso trascurata è il prefetching o preconnecting ai domini CDN. Aggiungete nell'intestazione HTML `rel="dns-prefetch"` o `rel="preconnect"` per l'URL del vostro CDN. In questo modo si velocizzano la risoluzione DNS e l'avvio della connessione. Assicuratevi di farlo solo per le lingue pertinenti – con un CDN globale che ha molti PoP, è sufficiente un preconnect al server più vicino.
Testate la configurazione CDN con test di carico da diverse regioni. Strumenti come Geonode o WebPageTest con selezione della posizione aiutano a identificare i colli di bottiglia. Tenete presente che i provider CDN hanno coperture diverse: alcuni coprono meglio l'Africa o il Sud-est asiatico. Valutate costi e prestazioni. Infine: la configurazione CDN deve essere verificata regolarmente, poiché i modelli di traffico e le posizioni degli utenti possono cambiare. Per questioni legali (ad esempio l'archiviazione dei dati in determinati paesi), consultate un consulente legale.
Strategie di caching per risorse multilingue
Il caching efficiente è la spina dorsale di tempi di caricamento rapidi, specialmente per i siti web multilingue. Iniziate separando le risorse indipendenti dalla lingua da quelle dipendenti dalla lingua. I file indipendenti dalla lingua (ad esempio CSS generici, librerie, icone senza testo) possono essere dotati di tempi di cache lunghi (un anno o più). Utilizzate a tal fine l'intestazione `Cache-Control` con `max-age=31536000` e un'impronta digitale nell'URL. Le risorse dipendenti dalla lingua come subset di font, immagini localizzate o varianti CSS specifiche per lingua richiedono TTL più brevi o una versione tramite URL.
Per le pagine HTML, impostate una cache dinamica – idealmente lato server (ad esempio Varnish) o tramite CDN. Poiché il contenuto è specifico per lingua, utilizzate l'intestazione `Vary: Accept-Language` o, per un maggiore controllo, una chiave di cache personalizzata che includa l'identificatore della lingua. Esempio: in Nginx potete impostare `proxy_cache_key "$host$request_uri$http_accept_language";`. Assicuratevi che la cache non diventi troppo grande: utilizzate strategie di invalidazione quando i contenuti cambiano.
Per le immagini che hanno grafiche o testo diversi a seconda della lingua, si consiglia un caching separato con breve durata (ad esempio 1 ora) o una generazione on-the-fly con CDN origin-pull. In alternativa, potete nominare le immagini in modo specifico per lingua (ad esempio `hero-de.jpg`) e dotarle di cache lunga – ma in caso di aggiornamenti dovrete modificare gli URL. Un altro approccio è il caching lato client con Service Worker: potete gestire una cache separata per ogni lingua e cancellarla al cambio di lingua.
Misurate il vostro cache hit rate con strumenti di analisi. Un tasso basso indica chiavi inefficienti o TTL troppo brevi. Ottimizzate in modo iterativo: prolungate i TTL per risorse stabili, accorciateli per quelle modificate di frequente. Testate il comportamento in caso di cambio lingua – assicuratevi che la cache non fornisca accidentalmente la lingua sbagliata. Dal punto di vista legale può essere rilevante se vengono memorizzati nella cache dati personali; in tal caso si consiglia una consulenza legale. Le strategie di caching ben studiate non sono un compito una tantum, ma un processo di ottimizzazione continuo.

Lazy Loading delle traduzioni: caricare i contenuti linguistici su richiesta
Il lazy loading è una tecnica consolidata per ridurre i tempi di caricamento iniziali, caricando le risorse non immediatamente necessarie solo quando servono. Nel contesto dei siti web multilingue, ciò significa che le traduzioni per lingue secondarie o contenuti poco visitati non vengono caricate completamente al primo accesso. Invece, si caricano le risorse linguistiche (JSON, file PO, frammenti di testo tradotti) in modo asincrono non appena l'utente cambia lingua o un determinato elemento diventa visibile.
Un approccio pratico: definite per ogni lingua un set base snello di traduzioni (es. navigazione, footer, testi UI generici). Caricatelo in modo sincrono o anticipato al primo caricamento della pagina. Tutti gli altri testi, come descrizioni di prodotto o articoli del blog, vengono forniti come file separati e caricati solo su richiesta. Implementate un selettore di lingua che, al clic, carichi in modo asincrono il set di traduzioni corrispondente e aggiorni i testi visibili. Utilizzate Intersection Observer per rilevare i contenuti nel viewport e caricare selettivamente le loro traduzioni.
Assicuratevi che le traduzioni caricate successivamente vengano memorizzate nella cache in modo efficiente: impostatate una chiave di cache univoca per ogni file lingua (es. basata su URL e codice lingua) e utilizzate intestazioni HTTP di caching come Etag o Last-Modified. Evitate di raggruppare tutte le traduzioni di una lingua in un unico file di grandi dimensioni – suddividetele piuttosto in blocchi logici (componenti, aree della pagina). In questo modo minimizzate la quantità di dati per ogni caricamento. Tenete anche presente che il caricamento successivo delle traduzioni non deve compromettere l'usabilità: assicuratevi che l'interfaccia utente rimanga utilizzabile durante il caricamento, ad esempio visualizzando placeholder o elementi scheletro.
Nella pratica, si è dimostrato efficace utilizzare una combinazione di traduzioni critiche e non critiche. I testi critici vengono forniti inizialmente, quelli non critici tramite lazy loading. Ciò riduce notevolmente la dimensione iniziale del payload. Un esempio: un negozio online multilingue carica inizialmente solo l'interfaccia base per la lingua selezionata; le migliaia di descrizioni prodotto in altre lingue vengono caricate successivamente solo quando l'utente apre la pagina del prodotto o cambia lingua. Le misurazioni mostrano in genere una riduzione del Time-to-Interactive del 15-30%, senza compromettere la funzionalità. Durante l'implementazione, verificate sempre che il vostro sistema di gestione dei contenuti o la vostra piattaforma di traduzione offrano meccanismi adeguati per gestire automaticamente la suddivisione.
Misurazione delle performance: strumenti e metriche nel contesto multilingue
La misurazione delle prestazioni dei siti web multilingue richiede un adattamento delle metriche e degli strumenti comuni, poiché le risorse specifiche della lingua (font, file di traduzione, immagini localizzate) possono influenzare le performance in modo diverso. Utilizzate metriche consolidate come First Contentful Paint (FCP), Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS) e Time to Interactive (TTI). Tuttavia, adattate le condizioni di test: simulate accessi da diverse aree geografiche (ad esempio tramite WebPageTest o Lighthouse con località personalizzate) per valutare l'impatto di CDN e Edge Caching.
Eseguite test per ogni variante linguistica singolarmente, poiché i tempi di caricamento possono variare notevolmente a seconda della lingua. Ad esempio, le lingue con caratteri latini (tedesco, inglese) possono richiedere meno dati per i font rispetto a lingue con sistemi di scrittura complessi (cinese, arabo). Utilizzate il Real User Monitoring (RUM) per raccogliere dati reali degli utenti – strumenti come Google Analytics, SpeedCurve o Datadog consentono la segmentazione per lingua e località. In questo modo potete identificare se una determinata variante linguistica si carica più lentamente e deve essere ottimizzata in modo mirato.
Oltre ai Core Web Vitals, dovreste monitorare anche il numero di richieste HTTP e la dimensione totale del payload per versione linguistica. Uno strumento come Lighthouse mostra il riepilogo dell'archivio HTTP, mentre WebPageTest fornisce diagrammi a cascata dettagliati. Prestate attenzione alle risorse linguistiche che potrebbero non essere memorizzate nella cache, ad esempio file di traduzione che vengono ricaricati a ogni cambio di pagina. Utilizzate gli strumenti per sviluppatori del browser (scheda Network) e impostate marcatori di performance personalizzati tramite Performance API per misurare i tempi di caricamento dei cambi di lingua.
Per esperienza, la sfida maggiore è la standardizzazione delle condizioni di test. Poiché gli utenti multilingue utilizzano dispositivi e reti diversi, dovreste combinare monitoraggio sintetico (ad esempio con latenze fisse) e RUM. Definite per ogni versione linguistica budget specifici per FCP (ad esempio sotto i 2 secondi) e LCP (sotto i 2,5 secondi). Verificate regolarmente che tutte le versioni linguistiche rispettino queste soglie. È fondamentale essere consapevoli delle differenze tra le lingue: non ottimizzate globalmente, ma in modo differenziato per gruppi di lingue. Documentate quali metriche raccogliete per quale lingua e annotate le deviazioni per intervenire in modo mirato. Tenete presente che le condizioni legali per il tracciamento dei dati utente possono variare da paese a paese – in caso di dubbio, consultate un consulente legale.
Insidie nelle misurazioni internazionali: Dati di test lingua-dipendenti
Nelle misurazioni delle prestazioni di siti web multilingue si nascondono diverse insidie che possono falsare i risultati. Un errore comune è l'uso di dati di test identici per tutte le versioni linguistiche. Se, ad esempio, testate il vostro sito con uno strumento come Lighthouse solo sulla versione inglese, ignorerete che la versione francese potrebbe caricare font più pesanti o immagini diverse. Testate quindi ogni lingua con test specifici in condizioni realistiche, incluse le velocità di rete e i dispositivi tipici della regione.
Un altro ostacolo è l'assunzione che i Core Web Vitals possano essere interpretati allo stesso modo per tutte le lingue. FCP e LCP possono essere influenzati dalla dimensione e complessità dei font: un testo cinese richiede spesso più caratteri per frase, il che può portare a maggiori spostamenti del layout. Utilizzate soglie specifiche per lingua e confrontate solo all'interno dello stesso gruppo linguistico. Fate attenzione anche all'impatto delle lingue RTL (arabo, ebraico): queste possono influenzare il valore CLS se il CSS non è correttamente progettato per l'ordinamento da destra a sinistra.
Anche la scelta delle origini di test è critica. Molti strumenti testano per impostazione predefinita da server statunitensi. Le simulazioni da diverse regioni del mondo (ad esempio Europa, Asia) sono essenziali, poiché la latenza verso il vostro hosting o CDN varia. Utilizzate il parametro di localizzazione in WebPageTest o le posizioni personalizzate in Lighthouse. Un altro punto: la dimensione dei file di traduzione può variare anche all'interno di una stessa lingua, a seconda della quantità di testo per pagina. Quindi non misurate solo la homepage, ma anche pagine secondarie rappresentative con contenuti estesi (ad esempio pagine di dettaglio prodotto).
Per esperienza, anche la memorizzazione nella cache porta a distorsioni: se come tester visitate più volte una pagina, la cache interviene e i tempi di caricamento sono artificialmente bassi. Eseguite sempre le misurazioni a freddo (svuotando la cache del browser di test). Considerate inoltre la diversa distribuzione di utenti mobili e desktop per lingua. In alcuni mercati domina la connessione mobile con velocità inferiori. Simulate quindi anche velocità 3G o 4G. Il consiglio più importante: documentate tutti i parametri di test (lingua, posizione, dispositivo, rete) e confrontate solo in condizioni identiche. Solo così si possono ottenere affermazioni valide sulle prestazioni del vostro sito multilingue. Si noti che potrebbe essere opportuna una consulenza legale in materia di protezione dei dati per le misurazioni RUM.
I siti web multilingue affrontano sfide specifiche di tempo di caricamento: font, immagini e distribuzione geografica influiscono direttamente sull'esperienza utente. La nostra guida mostra come ottimizzare le prestazioni con subsetting, strategie edge e caching mirato, senza compromettere la localizzazione. Scopri come misurare i tempi di caricamento in base alla lingua ed evitare errori comuni.
Rendering dinamico vs. statico: Impatto sui tempi di caricamento
La scelta tra rendering dinamico e statico influisce in modo significativo sui tempi di caricamento del vostro sito multilingue. Nel rendering statico, vengono generati in anticipo file HTML completi per ogni lingua e percorso. Ciò consente una distribuzione diretta tramite CDN, senza elaborazione lato server: il tempo di caricamento si riduce alla sola durata del trasferimento. Per le lingue con molti visitatori da determinate regioni, potete memorizzare queste pagine statiche su server periferici vicini agli utenti.
Il rendering dinamico, invece, genera le pagine solo su richiesta. Gli svantaggi sono l'aumento della latenza dovuto alle query di backend e la dipendenza dalle prestazioni del server. Per esperienza, le pagine renderizzate dinamicamente nei siti multilingue richiedono 200-500 millisecondi in più per il tempo di risposta del server, poiché vengono eseguite logiche linguistiche e query al database. Tuttavia, per le lingue con domanda molto bassa, il rendering dinamico può essere più efficiente in termini di risorse, poiché non è necessario mantenere file statici per tutte le varianti.
Nella pratica, un approccio ibrido si dimostra efficace: le varianti linguistiche più richieste (ad esempio inglese, tedesco, francese) dovrebbero essere prerenderizzate staticamente, mentre le lingue meno comuni vengono servite dinamicamente quando necessario. Framework moderni come Next.js o Nuxt.js supportano questa strategia tramite „Incremental Static Regeneration“. Concretamente, si definisce un intervallo di aggiornamento per ogni lingua; dopo le modifiche, le pagine statiche vengono rigenerate automaticamente. Fare attenzione che le pagine linguistiche memorizzate nella cache non diventino obsolete: implementare l'invalidazione della cache tramite webhook o pipeline CI/CD.
Un'ulteriore possibilità di ottimizzazione è la combinazione con Edge-Side-Includes (ESI). In questo modo, gli elementi dinamici (ad esempio selettori di lingua personalizzati) possono essere caricati successivamente, mentre il corpo statico della pagina è immediatamente visibile. Misurate gli effetti con strumenti come Lighthouse o WebPageTest, eseguendo test separati per ogni lingua con proxy utente dei paesi corrispondenti. In questo modo evitate le trappole di misurazione dovute a differenze di latenza geografica.

Subsetting automatizzato: distribuire file di font per ogni lingua
Il subsetting automatizzato dei font è una leva centrale per ridurre il tempo di caricamento dei siti web multilingue. Invece di distribuire un file font completo che contiene tutti i glifi di tutte le lingue, si genera per ogni lingua un file personalizzato con solo i caratteri necessari. I risparmi tipici sono del 50–80% della dimensione del file – a seconda del grado di copertura. Per l'alfabeto cirillico, la dimensione del file scende da 150 KB a 30 KB, per il cinese da diversi megabyte a 200–400 KB.
L'automazione è meglio realizzata tramite strumenti di build o fornitori di font che eseguono il subsetting basato sui tuoi contenuti effettivi. Strumenti come glyphhanger o fonttools possono essere integrati nel tuo processo CI/CD. Definisci per ogni lingua un elenco dei blocchi Unicode utilizzati e genera i file subset. Assicurati di includere anche caratteri speciali, cifre e punteggiatura per ogni lingua, poiché spesso vengono trascurati. Esempio: per il tedesco servono le umlaut (Ä, Ö, Ü) e ß, per il francese gli accenti (é, è, ê, ç, etc.).
La distribuzione dei file font avviene idealmente tramite lo stesso CDN dei tuoi contenuti. Denomina i file in base al codice lingua (es. font-de.woff2) e utilizza intestazioni cache con tempi di scadenza lunghi. Applica il subsetting su ogni pagina con la variante linguistica corrispondente. Utilizza link preload nell'<head> della pagina per precaricare il font critico: <link rel="preload" href="font-de.woff2" as="font" crossorigin>. Combina questo con font-display: swap nel CSS, in modo che il testo venga renderizzato immediatamente anche in caso di ritardo del font.
Controlla regolarmente l'attualità dei file subset: quando vengono aggiunti nuovi contenuti con caratteri rari, devi estendere gli elenchi subset. Automatizza questo passaggio tramite uno script che scansiona l'HTML generato ed estrae i glifi utilizzati. Un ostacolo è che alcuni browser in caso di glifi mancanti ricadono sui font di sistema – questo può compromettere il design. Pertanto, testa visivamente ogni variante linguistica. Con questo approccio garantisci che i font non gonfino inutilmente i tempi di caricamento, ma siano esattamente adattati alla lingua di destinazione.
Funzioni Edge: Personalizzazione e ottimizzazione della geolocalizzazione
Le funzioni Edge consentono di eseguire la logica linguistica e di personalizzazione direttamente sui server CDN, senza dover contattare il server di origine. Per i siti web multilingue, ciò offre due vantaggi principali: la distribuzione viene accelerata poiché l'elaborazione avviene più vicino all'utente, ed è possibile reagire dinamicamente alla posizione o alle impostazioni linguistiche dell'utente senza ritardare l'intero caricamento della pagina.
Un'applicazione tipica è il riconoscimento automatico della lingua tramite geolocalizzazione. Quando un utente accede dalla Francia, puoi impostare sul bordo un reindirizzamento 302 alla versione francese o impostare il cookie della lingua prima che la pagina venga caricata. A tal fine, utilizzi l'indirizzo IP dell'utente e una tabella di lookup che associa i paesi ai codici lingua. Questo funziona particolarmente bene per pagine puramente statiche, poiché l'Edge prende la decisione senza elaborazione lato server. Tuttavia, tieni conto del GDPR: i dati di geolocalizzazione possono essere utilizzati solo per il caricamento corrente della pagina, non per la memorizzazione senza consenso.
Un altro campo di applicazione è la personalizzazione dei contenuti in base alla lingua. Con le funzioni Edge, puoi nascondere dinamicamente il selettore di lingua se l'utente vede già la versione corretta, o inserire banner pubblicitari regionali. Questa logica viene eseguita come funzione JavaScript sul bordo, che manipola la risposta prima che raggiunga l'utente. Un esempio: un messaggio di benvenuto viene adattato in base all'intestazione Accept-Language del browser. La funzione Edge legge l'intestazione, seleziona il testo appropriato da una mappa predefinita e lo inserisce nell'HTML.
Per la misurazione delle prestazioni, è importante non considerare le funzioni Edge come una scatola nera. Misura il tempo di elaborazione aggiuntivo della logica Edge; per esperienza, è inferiore a 50 ms. Utilizza metriche proprie del CDN o test sintetici con sedi in tutto il mondo. Evita di trasferire troppa logica all'Edge – calcoli complessi o query di database rimangono nel backend. Le funzioni Edge sono particolarmente adatte per decisioni semplici basate solo su posizione, lingua o tipo di dispositivo. Con queste strategie ottimizzi la velocità di distribuzione del tuo sito web multilingue senza limitare le possibilità di personalizzazione.
Localizzazione e prestazioni: integrazione con il CMS
La scelta del sistema di gestione dei contenuti (CMS) e la sua configurazione influenzano direttamente i tempi di caricamento del vostro sito web multilingue. Un CMS che memorizza le traduzioni come entità di contenuto separate e le recupera in modo efficiente può evitare colli di bottiglia nelle prestazioni. Evitate soluzioni che generano le traduzioni solo al momento dell'esecuzione tramite query al database o API esterne – queste causano ritardi misurabili, specialmente per lingue con set di caratteri ampi o strutture testuali complesse.
Optate invece per un CMS che esegua il pre-rendering dei contenuti tradotti o li distribuisca come file statici. Se il vostro sistema si basa su query dinamiche, ottimizzate gli indici del database per i campi specifici della lingua e implementate meccanismi di caching per i contenuti richiesti frequentemente. Nella pratica, è efficace utilizzare un tipo di contenuto o una tabella separata per ogni versione linguistica, invece di memorizzare tutte le lingue in un unico campo. In questo modo evitate complesse operazioni JOIN e riducete i tempi di query.
Prestate attenzione anche all'integrazione di immagini e media: un CMS dovrebbe supportare varianti di immagine dipendenti dalla lingua senza dover scansionare ogni volta l'intera galleria multimediale. Utilizzate percorsi file che includono l'identificatore della lingua e assicuratevi che le immagini siano ottimizzate già al momento della creazione del contenuto (ad esempio tramite compressione automatica e ridimensionamento). Evitate plugin che inseriscono traduzioni successivamente tramite JavaScript – questo blocca il percorso di rendering e aumenta il tempo fino all'interattività.
Prima di utilizzare un plugin di traduzione, verificate se offre la possibilità di generazione statica o caching compatibile con CDN. Alcuni CMS come WordPress o TYPO3 permettono di distribuire pagine specifiche per lingua come file HTML statici, riducendo il carico del server e migliorando i tempi di caricamento per gli utenti finali. Pianificate inoltre una revisione regolare delle prestazioni del CMS, specialmente sotto carico multilingue – ad esempio con chiamate simulate da diverse regioni linguistiche. Tenete presente che gli aspetti legali (ad esempio la memorizzazione conforme al GDPR delle traduzioni) possono influenzare la scelta del CMS; se necessario, richiedete una consulenza legale.
Checklist: ottimizzare i tempi di caricamento del vostro sito web multilingue
Questa checklist riassume le misure più importanti per migliorare i tempi di caricamento del vostro sito web multilingue. Esaminate i punti in modo sistematico e documentate i risultati. Iniziate con una misurazione delle prestazioni attuali per ogni versione linguistica – utilizzate strumenti come Lighthouse o WebPageTest, eseguendo i test da località nelle rispettive regioni linguistiche. Annotate i Core Web Vitals (Largest Contentful Paint, First Input Delay, Cumulative Layout Shift) e identificate le versioni linguistiche più lente.
1. Ottimizzazione dei font: Verificate di caricare i file di font appropriati per ogni lingua. Utilizzate il subsetting per fornire solo i caratteri necessari per lingua. Usate font-display:swap o optional per rendere visibile il testo prima del caricamento del font. Considerate di ospitare i font come file statici sul vostro CDN anziché su server esterni.
2. Fornire varianti di immagini: Create un set di immagini per ogni lingua (o almeno per regioni con abitudini visive diverse). Utilizzate formati moderni (WebP, AVIF) e attributi responsive (srcset, sizes). Caricate in lazy load le immagini non visibili, ma assicuratevi che l'immagine hero si carichi immediatamente.
3. Configurazione CDN: Assicuratevi che il vostro CDN serva le richieste da server edge vicini alle regioni linguistiche di destinazione. Configurate il geo-routing e regole di caching dipendenti dalla lingua. Evitate che ogni versione linguistica richieda uno slot di cache separato – utilizzate una cache generica con Vary:Accept-Language se i contenuti sono identici.
4. Strategie di caching: Implementate il caching lato server per le pagine tradotte. Utilizzate un reverse proxy (ad esempio Varnish) e memorizzate nella cache le pagine HTML in modo specifico per lingua. Per le parti dinamiche (ad esempio carrello), usate Edge Side Includes (ESI) o rendering lato client.
5. Lazy loading delle traduzioni: Caricate solo le risorse necessarie per la lingua corrente. Evitate di distribuire file di traduzione per tutte le lingue contemporaneamente. Utilizzate il code-splitting per mantenere i bundle JavaScript specifici per lingua.
6. Verifica della configurazione CMS: Assicuratevi che il vostro CMS distribuisca le traduzioni in modo statico e non esegua query di database complesse per ogni richiesta linguistica. Testate le prestazioni sotto carico realistico, specialmente per versioni linguistiche con molti contenuti.
7. Monitoraggio regolare: Impostate un monitoraggio che misuri i tempi di caricamento di tutte le versioni linguistiche e segnali eventuali anomalie. Verificate dopo ogni aggiornamento dei contenuti che le prestazioni rimangano stabili.
Nota: L'ottimizzazione è un processo iterativo. Misurate prima e dopo ogni modifica per dimostrarne l'effetto. Per questioni legali (ad esempio la protezione dei dati nell'uso del CDN), consultate un avvocato specializzato.
Insidie ed errori comuni nell'ottimizzazione dei tempi di caricamento multilingue
Nell'ottimizzazione dei siti web multilingue si verificano spesso errori tipici che allungano o addirittura peggiorano inutilmente i tempi di caricamento. Un'insidia comune è la strategia di subsetting incompleta: se vengono ottimizzati solo i caratteri latini, ma i font asiatici o cirillici vengono incorporati integralmente, si creano differenze estreme nei tempi di caricamento tra le versioni linguistiche. In pratica, ciò porta a una pagina giapponese o russa molto più lenta rispetto a quella inglese. Un altro errore è l'assenza di una cache dipendente dalla lingua. Molti CMS distribuiscono URL identici per lingue diverse, causando conflitti di cache. Esempio: un visitatore dalla Germania accede a /de/produkt, la cache memorizza la versione tedesca; il visitatore successivo dalla Francia riceve erroneamente la pagina tedesca fino a quando la cache non viene invalidata. Ciò può essere evitato solo tramite chiavi di cache basate su URL (ad es. /en/produkt vs. /de/produkt) o cookie di lingua. Anche l'ottimizzazione delle immagini viene spesso trascurata: le immagini specifiche per lingua (ad es. testi nelle intestazioni) vengono incluse come file separati, ma senza source-set o ottimizzazione del formato. Inoltre, molti sviluppatori utilizzano font uniformi per tutte le lingue, sebbene i file dei font varino notevolmente in base al set di caratteri. Il risultato: download inutilmente grandi per versioni linguistiche che richiedono solo pochi caratteri. Un altro errore comune è il caricamento sequenziale delle traduzioni tramite JavaScript – spesso si verifica un Flash of Untranslated Content (FOUTC), che non solo compromette l'esperienza utente, ma può anche avere rilevanza SEO (poiché Googlebot potrebbe indicizzare contenuti incompleti). Infine, le ottimizzazioni falliscono a causa della mancanza di budget di performance per ogni versione linguistica. Un limite generale di 2 secondi non è sufficiente se la pagina cinese richiede il 50% di risorse in più. Meglio: definire un budget separato per ogni lingua e verificarlo regolarmente con strumenti come Lighthouse o WebPageTest. Nella collaborazione con fornitori di servizi di traduzione, è opportuno stabilire linee guida chiare per la dimensione dei file di font e immagini. È preferibile far recapitare le traduzioni in un sistema di staging per il test delle performance prima del passaggio in produzione. Solo così si evitano brutte sorprese dopo il lancio.
Strumenti e automazione per la gestione delle performance dei siti web multilingue
Il monitoraggio e l'ottimizzazione dei tempi di caricamento di un sito web multilingue richiedono strumenti specializzati in grado di riconoscere automaticamente le differenze tra le versioni linguistiche. Per un monitoraggio continuo sono adatti test sintetici con strumenti come Lighthouse CI o WebPageTest, che possono eseguire test separati per ogni URL lingua. Un approccio collaudato è l'impostazione di un cron job che controlli settimanalmente le pagine principali di ogni versione linguistica e scriva i risultati in una dashboard. È essenziale scegliere server vicini alla regione di destinazione – per la pagina giapponese, quindi, un server di test a Tokyo, non a Francoforte. Per l'ottimizzazione dei font, strumenti come FontForge o lo script di subsetting di Google Fonts sono ideali per estrarre automaticamente solo i caratteri necessari dal font completo. Questo può essere integrato nel processo CI/CD: non appena arrivano nuove traduzioni, viene attivato uno script di build che genera un file di font compresso per ogni lingua. Allo stesso modo, le immagini possono essere automatizzate: strumenti come Sharp (Node.js) o ImageMagick possono generare varianti di immagine specifiche per lingua e convertirle in formati moderni come WebP o AVIF. La sfida è spesso capire quale immagine deve essere sostituita per quale lingua. Una soluzione è l'integrazione nel CMS: un campo personalizzato per l'immagine lingua garantisce che per ogni versione venga distribuita una risorsa ottimizzata. Per la cache, si consiglia l'uso di servizi CDN che supportano l'invalidazione basata sulla lingua, ad esempio tramite chiamate API Purge che cancellano solo i file cache di una specifica versione linguistica. Anche gli Edge Worker (ad es. di Cloudflare o Akamai) possono essere utilizzati per caricare risorse diverse in base alla lingua o eseguire il subsetting direttamente all'edge. Un importante strumento per la misurazione delle performance in contesto multilingue è il Resource Timing API: con script personalizzati è possibile misurare i tempi di caricamento di font, immagini e snippet di traduzione nell'ambiente live e registrarli in strumenti di analisi come Google Analytics o in un archivio dati proprio. In questo modo si ottiene un quadro realistico dell'esperienza utente effettiva. Infine, va menzionato il monitoraggio del budget: strumenti come Sitespeed.io consentono di definire budget di performance separati per ogni versione linguistica e di attivare allarmi in caso di superamento. L'automazione di tutti questi passaggi fa risparmiare tempo a lungo termine e impedisce che i problemi di performance rimangano nascosti.
blog.faqT
In che modo la scelta del font influisce sui tempi di caricamento di un sito web multilingue?
Ogni carattere ha file di dimensioni diverse, specialmente per lingue con molti caratteri (es. cinese, arabo). Con il subsetting si caricano solo i glifi effettivamente necessari. Inoltre, il valore font-display (es. 'swap' o 'optional') controlla il rendering. In pratica, il subsetting riduce il file del font del 70-90%, migliorando sensibilmente i tempi di caricamento.
Che ruolo gioca la CDN nell'ottimizzazione di siti web multilingue?
Una Content Delivery Network distribuisce le risorse statiche su server periferici globali. Per le versioni linguistiche è fondamentale che i server siano geograficamente vicini agli utenti di ciascuna area linguistica, minimizzando così la latenza. Configurate inoltre regole di cache specifiche per lingua: ad esempio, le pagine in arabo possono essere memorizzate nella cache più a lungo rispetto a pagine di news in inglese aggiornate frequentemente.
È meglio caricare le traduzioni dinamicamente o fornirle già al caricamento della pagina?
Per esperienza, il lazy loading su richiesta è utile quando il sito web offre molte varianti linguistiche, ma l'utente ne necessita solo una. La struttura di base viene caricata inizialmente, i contenuti tradotti solo al cambio di lingua. Ciò riduce il volume iniziale di dati. Con poche lingue e testi brevi, però, il caricamento completo può essere più semplice: una decisione basata sulla valutazione delle prestazioni.