Het GRATIS pagespeed optimalisatie script als laatste redmiddel

Versnel je onherstelbare pagina met deze methode als laatste redmiddel om zelfs de traagste pagina's te verbeteren

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

Het GRATIS pagespeed optimalisatie script als laatste redmiddel

Soms kom ik als Core Web Vitals consultant een onherstelbare pagina tegen. Het is niet onherstelbaar omdat ik niet weet hoe ik het moet oplossen! Nee, het is onherstelbaar omdat het oplossen ervan zou betekenen dat grote delen van een site, die al op de planning staat om vervangen te worden, herschreven moeten worden. Of soms wanneer er simpelweg niet genoeg toegang en controle is om de code van de site te verbeteren, zoals je ziet bij meer gesloten CMS-systemen zoals WIX, HubSpot, WebFlow, enz. Of ten slotte, wanneer het budget er gewoon niet is. Het gebeurt niet vaak, maar soms kunnen klanten de hoeveelheid werk die gedaan en betaald moet worden niet nauwkeurig inschatten.

Laatst beoordeeld door Arjen Karel in maart 2026

Introductie van "Het pagespeed optimalisatie script als laatste redmiddel"

Wanneer je je in deze lastige positie bevindt, is dit script je wanhopige laatste poging om op zijn minst de pagespeed een beetje te verbeteren totdat je iets beters kunt bouwen. Het werkt slim door gebruik te maken van de Mutation Observer. Het script kijkt mee terwijl het Document Object Model van je site wordt aangemaakt door de browser en onderschept en vervangt direct trage code door snellere code.

Wat het doet:

  • Onderschep alle render-blocking scripts en stel ze uit door het type van het script te veranderen naar type="module". Deze truc maakt gebruik van het feit dat alle modulaire scripts standaard worden uitgesteld. Zelfs inline scripts. Dit maakt dit de veiligste methode om alle pagina scripts uit te stellen.
  • Lazy image loading: loading="lazy" en decoding="async" wordt toegevoegd aan alle afbeeldingen. Dit zal het laden van deze afbeeldingen uitstellen totdat ze bijna in de zichtbare viewport zijn, samen met het asynchroon updaten van de afbeeldingslay-out. Wees voorzichtig: je wilt je LCP afbeelding niet lazy loaden. Gebruik de prioImgs configuratie om deze uit te sluiten. Bekijk waarom het lazy loaden van de LCP afbeelding de prestaties schaadt.
  • Lazy load iframes. Net als bij afbeeldingen, kan het lazy loaden van iframes voorrang geven aan je eigen, belangrijkere content!

Configuratie

Het script accepteert een enkel "config object" en gebruikt die configuratie om het uitstellen of lazy loaden van belangrijke afbeeldingen en scripts over te slaan. Voor iframes werkt het andersom, het lazy load alleen de iframes die overeenkomen met je configuratie. Alle configuraties worden opgegeven als een reguliere expressie. Dat klinkt misschien eng, maar in de praktijk is het heel eenvoudig.

  • prioScripts: Slaat het uitstellen van scripts over waarvan de src overeenkomt met de configuratie.
    Voorbeeld: 'jquery|menu' komt overeen met je jquery en je menu script
  • prioImgs: Slaat lazy loading over voor alle afbeeldingen waarvan de afbeeldingsnaam, image class of image id overeenkomt.
    Voorbeeld: 'hero' komt overeen met zowel <img id="hero" ..> als <img src="hero.jpg">
  • lazyFrames: Lazy load alleen iframes waarvan de iframe src overeenkomt met de configuratie.
    Voorbeeld: 'youtube|maps' lazy load alle YouTube en Google Maps iframes.

Gebruik

Bewerk simpelweg de configuratie om deze af te stemmen op de behoeften van je website en plak het als allereerste in de head van de pagina. Onthoud: het script kan problemen pas oplossen nadat het is gevonden. Dus hoe lager je het in de head van de pagina plaatst, hoe minder effectief het zal zijn!

Beperkingen

Zoals ik al eerder aangaf, zou je dit script echt niet als je belangrijkste oplossing moeten gebruiken om je pagespeed te verbeteren. Alleen wanneer al het andere faalt, terwijl je actief aan een nieuwe site werkt, is een oplossing als deze acceptabel!
In meer technische termen racet dit script tegen de browser (en de preload scanner), dus het is niet te zeggen welke trage elementen al geactiveerd zijn voor download voordat het script actief wordt.

Het pagespeed optimalisatie script als laatste redmiddel

Hier is een geminificeerde versie die in productie gebruikt zou moeten worden

!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"});

Hier is een beter leesbare versie van het script. Gebruik dit niet in productie! Gebruik de geminificeerde versie!

!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.

Performance degrades the moment you stop watching.

I set up the monitoring, the budgets, and the processes. That is the difference between a fix and a solution.

Let's talk
Het GRATIS pagespeed optimalisatie script als laatste redmiddelCore Web Vitals Het GRATIS pagespeed optimalisatie script als laatste redmiddel