Lo script GRATUITO di ultima spiaggia per l'ottimizzazione della velocità della pagina

Velocizza la tua pagina irrecuperabile con questo metodo estremo per migliorare anche le pagine più lente.

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-07

Lo script GRATUITO di ultima istanza per l'ottimizzazione della velocità della pagina

A volte, come consulente Core Web Vitals, incontro una pagina impossibile da sistemare. Non è impossibile da sistemare perché non so come fare! No, è impossibile da sistemare perché farlo significherebbe riscrivere gran parte di un sito già destinato alla sostituzione. O a volte non c'è abbastanza accesso e controllo per migliorare il codice del sito, come succede con i CMS più chiusi tipo WIX, HubSpot, WebFlow ecc. O, infine, manca semplicemente il budget. Non succede spesso, ma a volte i clienti non possono prevedere con precisione la quantità di lavoro da fare e da pagare.

Ultima revisione di Arjen Karel a marzo 2026

Ti presento "Lo script di ultima istanza per l'ottimizzazione della velocità della pagina"

Quando ti trovi in questa situazione difficile, questo script è il tuo disperato tentativo finale per migliorare almeno un po' la velocità della pagina, finché non potrai costruire qualcosa di meglio. Funziona in modo intelligente usando il Mutation Observer. Lo script osserva il Document Object Model del tuo sito mentre viene creato dal browser e intercetta e sostituisce immediatamente il codice lento con codice più veloce.

Cosa fa:

  • Intercetta tutti gli script render blocking e li differisce cambiando il tipo dello script in type="module". Questo trucco sfrutta il fatto che tutti gli script modulari vengono differiti di default. Anche gli script inline. Questo lo rende il metodo più sicuro per differire tutti gli script della pagina.
  • Lazy loading delle immagini: loading="lazy" e decoding="async" vengono aggiunti a tutte le immagini. Questo differirà il caricamento di queste immagini finché non saranno quasi nel viewport visibile, insieme all'aggiornamento asincrono del layout dell'immagine. Fai attenzione: non vuoi applicare il lazy loading alla tua immagine LCP. Usa la configurazione prioImgs per escluderla. Scopri perché il lazy loading dell'immagine LCP danneggia le prestazioni.
  • Applica il lazy loading agli iframe. Come per le immagini, il lazy loading degli iframe può dare priorità ai tuoi contenuti, che sono più importanti!

Configurazione

Lo script accetta un singolo "oggetto di configurazione" e lo usa per evitare di differire o applicare il lazy loading alle immagini e agli script importanti. Per gli iframe funziona al contrario: applica il lazy loading solo agli iframe che corrispondono alla tua configurazione. Tutte le configurazioni sono espressioni regolari. Può sembrare spaventoso, ma in pratica è molto semplice.

  • prioScripts: Evita di differire gli script il cui src corrisponde alla configurazione.
    Esempio: 'jquery|menu' corrisponde al tuo script jquery e al tuo script del menu
  • prioImgs: Evita il lazy loading per tutte le immagini in cui il nome, la classe o l'id dell'immagine corrispondono.
    Esempio: 'hero' corrisponde sia a <img id="hero" ..> che a <img src="hero.jpg">
  • lazyFrames: Applica il lazy loading solo agli iframe il cui src corrisponde alla configurazione.
    Esempio: 'youtube|maps' applica il lazy loading a tutti gli iframe di YouTube e Google Maps.

Utilizzo

Modifica semplicemente la configurazione per adattarla alle esigenze del tuo sito web e incollala per prima cosa nell'head della pagina. Ricorda: lo script può risolvere i problemi solo dopo essere stato trovato. Quindi, più in basso lo posizioni nell'head della pagina, meno sarà efficace!

Limitazioni

Come ho detto prima, non dovresti assolutamente usare questo script come soluzione principale per sistemare la velocità della pagina. Solo quando tutto il resto fallisce, mentre stai lavorando attivamente a un nuovo sito, una soluzione del genere è accettabile!
In termini più tecnici, questo script fa a gara con il browser (e il preload scanner), quindi non c'è modo di sapere quali elementi lenti saranno già stati avviati per il download prima che lo script si attivi.

Lo script di ultima istanza per l'ottimizzazione della velocità della pagina

Ecco una versione minificata da usare in produzione

!function(t){['prioScripts', 'prioImgs', 'lazyFrames'].forEach(e=>{t[e]=t[e]?RegExp(t[e],"i"):null});let e=new MutationObserver(e=>{e.forEach(({addedNodes:e})=>{e.forEach(e=>{if(1===e.nodeType)switch(e.tagName){case"SCRIPT":if(!t.prioScripts||!t.prioScripts.test(e.src)){let t=e.getAttribute("type");t&&"text/javascript"!==t||e.setAttribute("type","module")}break;case"IMG":console.log(e.outerHTML),t.prioImgs&&(t.prioImgs.test(e.outerHTML)||e.getAttribute("loading"))||(e.setAttribute("loading","lazy"),e.setAttribute("decoding","async"));break;case"IFRAME":t.lazyFrames.test(e.src)&&e.setAttribute("loading","lazy")}})})});/MSIE|Trident/.test(navigator.userAgent)||(e.observe(document.documentElement,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",()=>{e.disconnect()}))}({prioScripts:"jquery",prioImgs:"hero",lazyFrames:"youtube|maps"});

Ecco una versione più leggibile dello script. Non usarla in produzione! Usa quella minificata!

!function (cfg) {\r\n\r\n    // Regexify config or nullify\r\n    ['prioScripts', 'prioImgs', 'lazyFrames'].forEach((e) => {\r\n        cfg[e] = cfg[e] ? new RegExp(cfg[e], "i") : null;\r\n    });\r\n\r\n    t0 = performance.now();\r\n\r\n    /* Watch mutated nodes */\r\n    const mutator = new MutationObserver((e) => {\r\n        e.forEach(({ addedNodes: e }) => {\r\n            e.forEach((e) => {\r\n                switch (e.nodeType) {\r\n                    case 1:\r\n                        switch (e.tagName) {\r\n                            // defer scripts by adding type="module", excusive test on src\r\n                            case "SCRIPT":\r\n                                if (!cfg.prioScripts || !cfg.prioScripts.test(e.src)) {\r\n                                    let type = e.getAttribute("type");\r\n                                    if (!type || type === "text/javascript") {\r\n                                        e.setAttribute("type", "module");\r\n                                    }\r\n                                }\r\n                                break;\r\n\r\n                            // lazy load images, excusive test on outerHTML for classname, id etc etc\r\n                            case "IMG":\r\n                                console.log(e.outerHTML);\r\n                                if (!cfg.prioImgs || (!cfg.prioImgs.test(e.outerHTML) && !e.getAttribute("loading"))) {\r\n                                    e.setAttribute("loading", "lazy");\r\n                                    e.setAttribute("decoding", "async");\r\n                                }\r\n                                break;\r\n\r\n                            // lazy load iframes, inclusive test on src\r\n                            case "IFRAME":\r\n                                if (cfg.lazyFrames.test(e.src)) {\r\n                                    e.setAttribute("loading", "lazy");\r\n                                }\r\n                                break;\r\n                        }\r\n                        break;\r\n                }\r\n            });\r\n        });\r\n    });\r\n\r\n\r\n    // Check for IE\r\n    if (!/MSIE|Trident/.test(navigator.userAgent)) {\r\n        mutator.observe(document.documentElement, { childList: true, subtree: true });\r\n        document.addEventListener("DOMContentLoaded", () => {\r\n            mutator.disconnect();\r\n            console.log("I quit after watching for " + (performance.now() - t0) + " ms");\r\n        });\r\n    }\r\n}({\r\n    prioScripts: 'jquery',\r\n    prioImgs: 'hero',\r\n    lazyFrames: 'youtube|maps',\r\n});\r\n\r\n\r\n

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

Dove sei lento davvero.

Ti mappo il critical rendering path con dati RUM. Ricevi una lista di fix in ordine di priorità, non un report di Lighthouse.

Richiedi l'audit
Lo script GRATUITO di ultima spiaggia per l'ottimizzazione della velocità della pagina Core Web Vitals Lo script GRATUITO di ultima spiaggia per l'ottimizzazione della velocità della pagina