{"id":40192,"date":"2021-10-07T13:43:45","date_gmt":"2021-10-07T11:43:45","guid":{"rendered":"https:\/\/kinsta.com\/?p=102244"},"modified":"2023-05-23T10:24:56","modified_gmt":"2023-05-23T08:24:56","slug":"optimaliseer-css","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/","title":{"rendered":"Zo optimaliseer je CSS voor maximale siteprestaties"},"content":{"rendered":"<p>Zelfs in 2021 blijven webprestaties een probleem. Volgens HTTP Archive vereist de gemiddelde pagina een <a href=\"https:\/\/httparchive.org\/reports\/page-weight?start=latest\">download van 2MB<\/a>, doet deze meer dan 60 HTTP verzoeken en kan het <a href=\"https:\/\/httparchive.org\/reports\/loading-speed?start=latest\">18 seconden<\/a> duren om volledig op een mobiel apparaat te laden. Stylesheets zijn goed voor slechts 60 kB &#8211; verdeeld over zeven verzoeken &#8211; dus ze zijn zelden een topprioriteit bij het oplossen van prestatieproblemen.<\/p>\n<p>Toch heeft CSS wel degelijk een effect, hoe klein het ook lijkt. Zodra je je <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-javascript\/\">JavaScript<\/a> hebt geoptimaliseerd, zou het leren om CSS op de juiste manier te optimaliseren de volgende prioriteit moeten zijn.<\/p>\n<p>Laten we ermee bezig gaan!<\/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>Zo be\u00efnvloedt CSS de prestaties van je pagina&#8217;s<\/h2>\n<p>CSS ziet er misschien onschuldig uit, maar het verwerken ervan kan zeker wat verwerkingskracht kosten.<\/p>\n<h3>CSS is render-blocking<\/h3>\n<p>Wanneer je browser een <code>&lt;link&gt;<\/code> tag tegenkomt, stopt het alle andere browserdownloads en -verwerkingen terwijl deze het CSS ophaalt en parset.<\/p>\n<p>JavaScript kan ook het <a href=\"https:\/\/kinsta.com\/nl\/blog\/render-blocking-javascript-css\/\">renderen van de browser blokkeren<\/a>, maar asynchrone verwerking is mogelijk met:<\/p>\n<ol>\n<li>Het <code>async<\/code> attribuut om scripts parallel te downloaden, die worden uitgevoerd zodra ze klaar zijn.<\/li>\n<li>Het <code>defer<\/code> attribuut om parallel te downloaden en vervolgens op volgorde uit te voeren wanneer de DOM gereed is.<\/li>\n<li>Het <code>type=\"module\"<\/code> attribuut om een ES module te laden (die zich gedraagt als <code>defer<\/code>).<\/li>\n<\/ol>\n<p>Assets zoals afbeeldingen vereisen vaak meer bandbreedte, maar er zijn <a href=\"https:\/\/kinsta.com\/nl\/blog\/webp\/\">effici\u00ebnte formats beschikbaar<\/a> en je kan ze <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-lazyload\/\">lazyloaden<\/a> (<code>loading=\"lazy\"<\/code> attribuut) zonder de browserweergave te blokkeren.<\/p>\n<p>Dit is allemaal niet mogelijk met CSS. Het bestand wordt in de cache opgeslagen, dus volgende pagina&#8217;s <em>zouden<\/em> sneller moeten worden geladen, maar het render-blocking proces blijft een issue.<\/p>\n\n<h3>Het verwerken van grote CSS bestanden kost tijd<\/h3>\n<p>Hoe groter je stylesheet, hoe langer het duurt om deze te downloaden en te verwerken in een CSS Object Model (CSSOM), dat de browser en JavaScript API&#8217;s kunnen gebruiken om de pagina weer te geven. Hoewel CSS stylesheets kleiner zijn dan de meeste andere websitebestanden, zijn ze niet immuun voor de vuistregel &#8216;kleiner is beter&#8217;.<\/p>\n<h3>CSS bestanden groeien<\/h3>\n<p>Het kan moeilijk zijn om stijlen te identificeren die niet meer worden gebruikt, en het verwijderen van de verkeerde kan grote schade aanrichten op een site. Ontwikkelaars kiezen doorgaans voor de benadering van &#8220;alles houden&#8221;. <a href=\"https:\/\/kinsta.com\/nl\/blog\/the-package-could-not-be-installed\/\">Paginastijlen<\/a>, <a href=\"https:\/\/kinsta.com\/nl\/blog\/web-components\/\">componenten<\/a> en widgets die niet meer worden gebruikt, blijven dus achter in de CSS. Het resultaat? De bestandsgrootte, complexiteit \u00e9n de tijd die het kost om alles te onderhouden groeit exponentieel, waardoor ontwikkelaars steeds minder snel overbodige code zullen verwijderen.<\/p>\n<h3>Stylesheets kunnen verwijzen naar andere assets<\/h3>\n<p>CSS kan verwijzen naar andere stylesheets met behulp van @import regels. Deze imports blokkeren de verwerking van de huidige stylesheet en het laden van verdere CSS bestanden <strong>in serie<\/strong>.<\/p>\n<p>Er kan ook naar andere assets worden verwezen, zoals lettertypen en afbeeldingen. De browser zal proberen downloads te optimaliseren, maar bij twijfel haalt hij ze onmiddellijk op. Inline base64-encoded bestanden worden nog verder verwerkt.<\/p>\n<h3>CSS be\u00efnvloedt rendering<\/h3>\n<p>Browsers hebben drie <a href=\"https:\/\/kinsta.com\/blog\/critical-rendering-path\/\">rendering-fasen<\/a>:<\/p>\n<ol>\n<li>De <strong>layout<\/strong> (of <strong>reflow<\/strong>) fase berekent de afmetingen van elk element en hoe dit de grootte of positionering van elementen eromheen be\u00efnvloedt.<\/li>\n<li>De <strong>paint<\/strong> fase haalt de visuele delen van elk element naar afzonderlijke lagen: tekst, kleuren, afbeeldingen, randen, schaduwen, etc.<\/li>\n<li>De <strong>composite<\/strong> fase plaatst elke laag op de pagina in de juiste volgorde, op basis van stackingcontexts, positionering, z-indexen, etc.<\/li>\n<\/ol>\n<p>Als je niet oppast, kunnen wijzigingen in CSS properties en animaties ervoor zorgen dat alle drie de fasen opnieuw moeten worden gerenderd. Sommige eigenschappen (properties), zoals schaduwen en gradients, kosten meer computerkracht dan bijvoorbeeld blokkleuren en marges.<\/p>\n<h2>Analysetools CSS performance<\/h2>\n<p>Toegeven dat je een CSS prestatieprobleem hebt, is de eerste stap op weg naar herstel! Het vinden en verhelpen van de oorzaken is een andere zaak.<\/p>\n<p>De volgende tools en diensten (niet in willekeurige volgorde gerangschikt) kunnen je helpen bij het identificeren van knelpunten in je code.<\/p>\n<h3>1. DevTools Network paneel<\/h3>\n<p>Specialisten op het gebied van webprestaties besteden veel tijd binnen <a href=\"https:\/\/kinsta.com\/nl\/blog\/inspect-element\/\">DevTools<\/a> en het <strong>Network<\/strong> paneel in het bijzonder. DevTools is ingebouwd in de <a href=\"https:\/\/kinsta.com\/nl\/marktaandeel-desktopbrowsers\/\">meeste moderne browsers<\/a>, hoewel we in onze voorbeelden Google Chrome zullen gebruiken.<\/p>\n<p>DevTools kan worden geopend vanuit het browsermenu, normaal gesproken via <strong>More tools<\/strong> &gt; <strong>Developer tools<\/strong> of via de sneltoetsen <strong>Ctrl | Cmd + Shift + I<\/strong> of <strong>F12<\/strong>.<\/p>\n<p>Schakel over naar het <strong>Network<\/strong> tabblad en zorg ervoor dat <strong>Disable cache<\/strong> is aangevinkt om te voorkomen dat gecachete bestanden het rapport be\u00efnvloeden. Je kan ook de &#8220;throttling&#8221; optie wijzigen om langzamere mobiele netwerken te simuleren.<\/p>\n<p>Vernieuw de pagina om de watervalgrafiek van downloads en verwerking te bekijken:<\/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=\"DevTools Network paneel\" width=\"781\" height=\"635\"><\/a><figcaption class=\"wp-caption-text\">DevTools Network paneel<\/figcaption><\/figure>\n<p>Elke lange balk is een reden tot bezorgdheid, maar je moet vooral op je hoede zijn voor lange geblokkeerde\/vastgelopen balkjes (weergegeven in het wit). In dit voorbeeld konden de gemarkeerde rij en alle volgende rijen niet worden gedownload totdat de render-blocking CSS- en JavaScript bestanden bovenaan de HTML pagina waren verwerkt.<\/p>\n<p>Met het <strong>Filter<\/strong> vak kan je specifieke items weergeven of verbergen:<\/p>\n<ul>\n<li><code>larger-than:<em>&lt;S&gt;<\/em><\/code>: Beperk tot bestanden groter dan\u00a0<em>&lt;S&gt;<\/em>, uitgedrukt als bytes (10,000), Kilobytes (1,000 kB), of megabytes (1 M)<\/li>\n<li><code>-larger-than:&lt;S&gt;<\/code>: Beperk tot bestanden kleiner dan\u00a0<em>&lt;S&gt;<\/em><\/li>\n<li><code>-domain:*&lt;.jouwdomein.com&gt;<\/code>: Toon externe verzoeken die niet vanuit je hoofddomein zijn geladen. Deze zijn vaak een belangrijke oorzaak van trage sites.<\/li>\n<\/ul>\n<p>Een high-performance pagina met geoptimaliseerde CSS heeft doorgaans minder items die parallel worden geladen met korte geblokkeerde\/vastgelopen balken.<\/p>\n<h3>2. WebPageTest.org<\/h3>\n<p><a href=\"https:\/\/www.webpagetest.org\/\">WebPageTest<\/a> biedt een vergelijkbare netwerk-watervalgrafiek, naast heel veel andere prestatiegrafieken:<\/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 waterval\" width=\"1023\" height=\"667\"><\/a><figcaption class=\"wp-caption-text\">WebPageTest.org asset waterval<\/figcaption><\/figure>\n<p>De service maakt gebruik van apparaten op verschillende locaties wereldwijd, zodat je de real-world prestaties en CSS optimalisaties kan beoordelen.<\/p>\n<h3>3. Chrome DevTools Lighthouse paneel<\/h3>\n<p>Het DevTools <strong>Lighthouse<\/strong> paneel wordt geleverd in op Chromium gebaseerde browsers zoals Chrome, Edge, Brave, Opera en Vivaldi. Je kan voor zowel mobiele als desktopapparaten verschillende rapporten genereren: Performance, Progressive Web App, Best Practices, Accessibility en <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-seo\/\">Search Engine Optimalisation<\/a>.<\/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=\"Devtools Lighthouse paneel\" width=\"738\" height=\"787\"><\/a><figcaption class=\"wp-caption-text\">Devtools Lighthouse paneel<\/figcaption><\/figure>\n<p>De tool doet suggesties voor verbeteringen, waaronder manieren om CSS te optimaliseren. Niet alles is misschien even praktisch of haalbaar, maar gelukkig wordt het laaghangend fruit voor je gehighlight.<\/p>\n<h3>4. Google PageSpeed Insights<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/google-pagespeed-insights\/\">PageSpeed Insights<\/a> is de online versie van Lighthouse. Het heeft minder functies, maar kan in elke browser worden gebruikt en biedt een aantal alternatieve inzichten.<\/p>\n<p>Een treemap toont bijvoorbeeld de grootste JavaScript assets met een dekkingsmetric, die aangeeft welk deel van de code wordt gebruikt en elke niet:<\/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=\"Treemap van Google PageSpeed Insights\" width=\"1254\" height=\"967\"><\/a><figcaption class=\"wp-caption-text\">Treemap van Google PageSpeed Insights<\/figcaption><\/figure>\n<p>CSS wordt niet weergegeven, maar de hoeveelheid JavaScript is van invloed op de effici\u00ebntie van stijlen.<\/p>\n<p>Vergelijkbare <a href=\"https:\/\/kinsta.com\/nl\/blog\/snelheidstest-website\/#website-speed-test-tools\">tools voor het testen van websitesnelheid <\/a>zijn <a href=\"https:\/\/tools.pingdom.com\/\">Pingdom Website Speed Test<\/a> en <a href=\"https:\/\/kinsta.com\/nl\/blog\/gtmetrix-speed-test\/\">GTMetrix<\/a>.<\/p>\n<h3>5. Chrome DevTools Coverage paneel<\/h3>\n<p>Het Devtools <strong>Coverage<\/strong> paneel in op Chromium gebaseerde browsers helpt je bij het vinden van ongebruikte CSS (en JavaScript) code. Selecteer <strong>Coverage<\/strong> van het DevTools submenu <strong>More tools<\/strong> en ververs vervolgens je pagina en blader door je site\/applicatie:<\/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=\"DevTools Coverage paneel\" width=\"752\" height=\"793\"><\/a><figcaption class=\"wp-caption-text\">DevTools Coverage paneel<\/figcaption><\/figure>\n<p>CSS en JavaScript assets worden weergeven in het paneel <strong>Coverage<\/strong>, met het aandeel ongebruikte code in rood. Klik op een bestand om de bron te bekijken met de ongebruikte code rood gemarkeerd op de plek waar je het regelnummer ziet.<\/p>\n<p>Een paar dingen om op te letten:<\/p>\n<ul>\n<li>De coveragemetric wordt gereset als je vernieuwt of naar een nieuwe pagina navigeert, zoals gebruikelijk is op een WordPress site. De metric met ongebruikte code neemt alleen af als je door een toepassing met \u00e9\u00e9n pagina bladert die content laadt zonder een paginavernieuwing.<\/li>\n<li>De tool analyseert alleen CSS die tot een specifiek tijdstip is gebruikt. Het kan niet bepalen of een widget wel of niet bekeken is en of deze meerdere JavaScript-gebonden states heeft.<\/li>\n<\/ul>\n<h3>6. Chrome DevTools Real-Time Performance Monitor<\/h3>\n<p>Op Chromium gebaseerde browsers hebben een realtime Performance Monitor. Ook deze is beschikbaar in het <strong>More tools<\/strong> menu van DevTools. De grafieken worden bijgewerkt terwijl je door pagina&#8217;s navigeert, scrolt en animaties activeert:<\/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\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/08\/performance-monitor.png\" alt=\"DevTools Real-Time Performance Monitor\" width=\"750\" height=\"312\"><\/a><figcaption class=\"wp-caption-text\">DevTools Real-Time Performance Monitor<\/figcaption><\/figure>\n<p>De volgende statistieken zijn van bijzonder belang om de CSS performance te optimaliseren (hoe lager, hoe beter):<\/p>\n<ul>\n<li><strong>CPU usage: <\/strong>processorgebruik van 0% tot 100%.<\/li>\n<li><strong>Layouts\/sec:<\/strong> de snelheid waarmee de browser de layout van de pagina opnieuw moet indelen.<\/li>\n<li><strong>Style recalcs\/sec:<\/strong> de snelheid waarmee de browser stijlen moet herberekenen.<\/li>\n<\/ul>\n<p>De andere statistieken kunnen ook nuttig zijn als CSS worstelt vanwege externe factoren (nogmaals, lagere waarden duiden op betere prestaties):<\/p>\n<ul>\n<li><strong>JS heap size: <\/strong>het totale geheugen dat wordt gebruikt door JavaScript objecten.<\/li>\n<li><strong>DOM Nodes: <\/strong>Het aantal elementen in het <a href=\"https:\/\/kinsta.com\/nl\/blog\/html-best-practices\/\">HTML<\/a> document.<\/li>\n<li><strong>JS event listeners:<\/strong> het aantal geregistreerde JavaScript event listeners.<\/li>\n<li><strong>Documents: <\/strong>het aantal resources, inclusief de pagina, CSS bestanden, JavaScript modules, etc.<\/li>\n<li><strong>Document Frames: <\/strong>het aantal frames, iframes en JavaScript worker scripts.<\/li>\n<\/ul>\n<h3>7. DevTools Performance rapport<\/h3>\n<p>Met het DevTools <strong>Performance<\/strong> paneel kan je pagina-activiteiten opnemen voor verdere analyse en prestatieproblemen helpen identificeren. De gegenereerde rapporten zijn complex en veel ontwikkelaars vermijden ze om die reden, maar ze bieden wel degelijk waardevolle informatie.<\/p>\n<p>Met het instellingenpictogram van het Performance paneel kan je verschillende opties instellen, zoals het vertragen van het netwerk en de CPU. Je kan ook JavaScript samples uitschakelen, zodat gedetailleerde call stacks niet worden opgenomen.<\/p>\n<p>Klik om te beginnen op het ronde pictogram <strong>Record<\/strong> en laad\/gebruik vervolgens je pagina en klik op de <strong>Stop<\/strong> knop om het rapport te zien:<\/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=\"DevTools Performance rapport\" width=\"673\" height=\"848\"><\/a><figcaption class=\"wp-caption-text\">DevTools Performance rapport<\/figcaption><\/figure>\n<p>Bijna al deze statistieken zijn nuttig voor JavaScript ontwikkelaars, maar wat CSS optimalisatie betreft kan je het beste kijken naar:<\/p>\n<ul>\n<li><strong>Rode balk bovenaan:<\/strong> deze geeft aan dat de framerate aanzienlijk is gedaald, wat prestatieproblemen kan veroorzaken.\u00a0 Dit wordt verwacht aan het begin van het laden van een pagina, maar overmatige CSS animaties kunnen ook een probleem zijn.<\/li>\n<li><strong>Overzichtstabel: <\/strong>hoge laad-, rendering-, en paintingstatistieken kunnen wijzen op een CSS probleem.<\/li>\n<\/ul>\n<h2>Indirecte CSS prestatieverbeteringen<\/h2>\n<p>De volgende fixes lossen CSS problemen niet meteen op, maar ze kunnen wel helpen om een paar veelvoorkomende prestatieproblemen met relatief weinig inspanning op te lossen.<\/p>\n<h3>Gebruik een goede host<\/h3>\n<p>Het gebruik van een goede host met servers die fysiek dichter bij je gebruikers staan, zal onmiddellijke prestatievoordelen opleveren. Hostingpakketten kunnen vari\u00ebren, maar er zijn drie hoofdtypen:<\/p>\n<ol>\n<li><strong>Gedeelde hosting: <\/strong>je website wordt gehost op een fysieke server, mogelijk samen met honderden andere sites. Schijfruimte, RAM, CPU tijd en bandbreedte wordt gedeeld. Abonnementen zijn vaak niet duur, maar de prestaties en beschikbaarheid worden be\u00efnvloed door andere sites. Upgraden is soms mogelijk, maar je site blijft over het algemeen binnen dezelfde infrastructuur.<\/li>\n<li><strong>Dedicated hosting: <\/strong>je site wordt gehost op een of meerdere fysieke servers die jij zelf bezit. De hardware kan naar wens worden geconfigureerd en ge\u00fcpgraded. Abonnementen zijn vaak duur en problemen met hardware kunnen problematisch zijn.<\/li>\n<li><strong>Cloudhosting: <\/strong><a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/\">Cloudhosting<\/a> transformeert de hardware-infrastructuur tot een reeks diensten die on-demand toegankelijk zijn. Je site kan op verschillende apparaten worden ingericht om upgrades eenvoudig te maken.<\/li>\n<\/ol>\n<p>De pakketten en prijzen van cloudhosting kunnen enorm vari\u00ebren. Je zou kunnen overwegen:<\/p>\n<ol>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-paas\/\">Platform as a Service (PaaS)<\/a> opties, zoals virtuele webservers en databases, of<\/li>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/saas-producten\/\">Software as a Service (SaaS)<\/a> opties, die <a href=\"https:\/\/kinsta.com\/nl\/\">volledig managed applicaties zoals WordPress<\/a><\/li>\n<\/ol>\n<p>Het wisselen van host kan de prestaties verbeteren. Het is onwaarschijnlijk dat dat het al je problemen oplost, maar het is een kosteneffectieve oplossing voor zowel problemen in de backend als met bandbreedte.<\/p>\n<p>Je kan overwegen om een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-cdn\/\">content delivery network (CDN)<\/a> of een gespecialiseerd afbeeldings- en video CDN te gebruiken dat de belasting kan verdelen over meerdere locaties die geografisch dichter bij je gebruikers liggen.<\/p>\n<h3>Maak gebruik van de effici\u00ebntiefeatures van browsers en servers<\/h3>\n<p>Ongeveer 10% van de sites activeert geen gzip (of betere) compressie, wat meestal de standaard serveroptie is. Het gebruik ervan vermindert de grootte van CSS met 60% of meer door bestanden te comprimeren voordat ze worden verzonden. Het lost ineffici\u00ebnte CSS niet op, maar de code zal wel eerder aankomen!<\/p>\n<p>Ook zou je <a href=\"https:\/\/kinsta.com\/nl\/leren\/wat-is-http\/\">HTTP\/2 kunnen activeren<\/a> (of beter) dat gegevens in een kleinere binaire indeling verstuurt, de headers comprimeert, zodat meer dan \u00e9\u00e9n bestand kan worden verzonden binnen dezelfde TCP verbinding.<\/p>\n<p>Zorg er ten slotte voor dat de browser CSS en andere bestanden effectief kan cachen. Dit is meestal een kwestie van het instellen van <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.21\">Expires<\/a>, <a href=\"https:\/\/www.w3.org\/Protocols\/rfc2616\/rfc2616-sec14.html#sec14.29\">last-modified<\/a> en\/of <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag\">ETag hashes<\/a> in de HTTP header.<\/p>\n<h3>Optimaliseer je CMS<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/cms-systemen\/\">Content management systemen<\/a> zoals WordPress kunnen worden uitgebreid met thema&#8217;s en plugins die van hun eigen CSS gebruikmaken. Waar moet zou je je <a href=\"https:\/\/kinsta.com\/nl\/ebooks\/wordpress\/wordpress-versnellen\/\">CMS moeten versnellen<\/a> door:<\/p>\n<ol>\n<li>Ongebruikte plugins te verwijderen.<\/li>\n<li>Slankere thema&#8217;s te gebruiken<\/li>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-caching\/\">Caching<\/a> in te schakelen om overmatige paginaregeneratie te voorkomen.<\/li>\n<\/ol>\n<h3>Optimaliseer je afbeeldingen<\/h3>\n<p>Afbeeldingen hebben niet dezelfde verwerkings- en weergave-overhead als HTML, CSS en JavaScript, maar nemen een groot deel van het paginagewicht en de bruikbare bandbreedte voor hun rekening. Overweeg:<\/p>\n<ol>\n<li>Het verwijderen van onnodige afbeeldingen.<\/li>\n<li>Het resizen van grotere afbeeldingen &#8211; misschien tot niet meer dan 150% van de maximale waarmee ze ooit op een scherm kunnen verschijnen.<\/li>\n<li>Het gebruik van een <a href=\"https:\/\/kinsta.com\/nl\/blog\/bestandstypen-afbeeldingen\/\">geschikte afbeeldingsindeling<\/a> &#8211; idealiter een sterk gecomprimeerde optie zoals <a href=\"https:\/\/kinsta.com\/nl\/blog\/webp\/\">WebP<\/a> of VIF, en mogelijk <a href=\"https:\/\/kinsta.com\/blog\/what-is-an-svg-file\/\">SVG<\/a> voor logo&#8217;s en grafieken.<\/li>\n<li>Het vervangen van afbeeldingen door CSS gradients of andere effecten.<\/li>\n<li>Het toevoegen van width en height attributen aan de HTML <code>&lt;img&gt;<\/code> of het gebruik van de nieuwe <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/aspect-ratio\">CSS aspect-ratio property<\/a> om ervoor te zorgen dat er voldoende ruimte op de pagina wordt gereserveerd voordat de afbeelding wordt gedownload.<\/li>\n<\/ol>\n<p>Een gespecialiseerd CDN voor afbeeldingen kan een deel van dit werk voor je uit handen nemen. Raadpleeg voor meer tips onze handleiding over het <a href=\"https:\/\/kinsta.com\/nl\/blog\/afbeeldingen-optimaliseren-voor-internet\/\">optimaliseren van afbeeldingen voor het internet<\/a>.<\/p>\n<h3>Verwijder ongebruikte CSS<\/h3>\n<p>De snelste stijlen zijn de stijlen die je nooit hoeft te laden of te renderen! Probeer <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-css\/\">CSS code die je niet langer nodig hebt te verwijderen\/bewerken<\/a>, zoals voor verouderde pagina&#8217;s, widgets of frameworks. Dit kan lastig zijn op grotere sites, en het is niet altijd duidelijk of een bepaalde set stijlen essentieel is of niet.<\/p>\n<p>De volgende tools analyseren het HTML en CSS gebruik tijdens build-time of door URL&#8217;s te crawlen om overtollige code te identificeren. Dit is niet altijd voldoende, dus er kunnen aanvullende configuraties worden ingesteld om ervoor te zorgen dat stijlen die worden geactiveerd door JavaScript en gebruikersinteracties worden vermeld:<\/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>Er is een betere optie: split CSS in afzonderlijke bestanden met duidelijke verantwoordelijkheidsniveaus en documenteer dienovereenkomstig. Het verwijderen van onnodige stijlen wordt dan aanzienlijk eenvoudiger.<\/p>\n<h2>Laadprestaties van CSS optimaliseren<\/h2>\n<p>Niet alle CSS wordt met dezelfde prioriteit geladen. De <code>&lt;link&gt;<\/code> tag heeft een aantal opties en eigenaardigheden die niet altijd logisch zijn.<\/p>\n<h3>Optimaliseer het gebruik van weblettertypen<\/h3>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/beste-google-fonts\/\">Google Fonts<\/a> en vergelijkbare lettertypewebsites hebben een revolutie teweeggebracht in <a href=\"https:\/\/kinsta.com\/nl\/blog\/html-lettertypen\/\">weblettertypen<\/a>, maar een paar regels lettertypecode kunnen honderden kilobytes aan bandbreedte opleveren.<\/p>\n<p>Dit zijn onze optimalisatiesuggesties:<\/p>\n<ol>\n<li><strong>Laad alleen de lettertypen die je nodig hebt: <\/strong>verwijder lettertypen die je niet gebruikt en controleer of er nieuwe lettertypen nodig zijn.<\/li>\n<li><strong>Laad alleen de weights en stijlen die je nodig hebt: <\/strong>de meeste lettertypesites kunnen het downloaden beperken tot bepaalde tekensets (zoals alleen Latin), weights (diktes) en italics (slants). Browsers kunnen ontbrekende stijlen automatisch weergeven, hoewel de resultaten slecht kunnen zijn.<\/li>\n<li><strong>Beperk de vereiste tekens: <\/strong>Niet vaak gebruikte lettertypen kan je beperken tot specifieke tekens. De titel &#8221; CSS tutorial&#8221; in Open Sans kan worden gedefinieerd door het toevoegen van een <code>&text=<\/code> parameter aan de Google fonts query string: <code>fonts.googleapis.com\/css?family=Open+Sans&text=CStuorial<\/code><\/li>\n<li><strong>Overweeg variabele lettertypen: <\/strong>Variabele lettertypen defini\u00ebren een grote verscheidenheid aan stijlen, weights, en italics met behulp van vectorinterpolatie. Het lettertypebestand is iets groter, maar je hebt er maar een nodig in plaats van meerdere. Het <a href=\"https:\/\/www.recursive.design\/\">recursieve lettertype<\/a> demonstreert de flexibiliteit van variabele lettertypen.<\/li>\n<li><strong>Laad lettertypen van je lokale server: <\/strong><a href=\"https:\/\/kinsta.com\/blog\/local-fonts\/\">Zelf-gehoste lettertypen<\/a> zijn effici\u00ebnter dan ze te gebruiken van een &#8220;font foundry&#8221;. Er zijn minder DNS lookups nodig en je kan de download beperken tot <a href=\"https:\/\/caniuse.com\/woff2\">WOFF2, die alle moderne browsers ondersteunen<\/a>. Oudere browsers (*kuch* IE *kuch*) kunnen terugvallen op een OS lettertype.<\/li>\n<li><strong>Overweeg OS lettertypen: <\/strong>Je weblettertype van 500 kB ziet er misschien prachtig uit, maar zou iemand het verschil merken als je overstapt naar de algemeen beschikbare lettertypen Helvetica, Arial, Georgia of Verdana? OS of <a href=\"https:\/\/kinsta.com\/nl\/blog\/web-safe-fonts\/\">web-safe lettertypen<\/a> zijn een gemakkelijke manier om de prestaties te verbeteren.<\/li>\n<\/ol>\n<h3>Gebruik de juiste optie om het lettertype te laden<\/h3>\n<p>Het kan een paar seconden duren voordat weblettertypen zijn gedownload en verwerkt. De browser zal ofwel:<\/p>\n<ol>\n<li><strong>Een Flash of Unstyle Text (FOUT) laten zien: <\/strong>het eerste beschikbare fallback-lettertype wordt als eerst gebruikt, maar wordt vervangen zodra het weblettertype gereed is.<\/li>\n<li><strong>Een Flash of Invisible Text (FOIT) laten zien: <\/strong>er wordt geen tekst weergegeven totdat het weblettertype gereed is. Dit is het standaardproces in moderne browsers, die doorgaans drie seconden wachten voordat ze kiezen voor een fallback-lettertype.<\/li>\n<\/ol>\n<p>Geen van beide is ideaal. De CSS <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@font-face\/font-display\">font-display<\/a> property en Google Font &#038; display = parameter kan een alternatieve optie selecteren:<\/p>\n<ul>\n<li><strong>auto:<\/strong> het standaardgedrag van de browser (meestal FOIT).<\/li>\n<li><strong>block:<\/strong> in de praktijk FOIT. Tekst is maximaal drie seconden onzichtbaar. Er is geen lettertypewissel, maar het kan even duren voordat de tekst verschijnt.<\/li>\n<li><strong>swap:<\/strong> in de praktijk FOUT. De eerste fallback wordt gebruikt totdat het weblettertype beschikbaar is. Tekst is direct leesbaar, maar het effect van het wisselen van lettertype kan de gebruikerservaring verstoren. <a href=\"https:\/\/meowni.ca\/font-style-matcher\/\">Font Style Matcher<\/a> kan worden gebruikt om een fallback van vergelijkbare grootte te defini\u00ebren.<\/li>\n<li><strong>fallback: <\/strong>een compromis tussen FOIT en FOUT. De tekst is een korte periode onzichtbaar (meestal 100ms), daarna wordt de eerste fallback gebruikt totdat het weblettertype beschikbaar is.<\/li>\n<li><strong>optional: <\/strong>vergelijkbaar met fallback, behalve dat er geen lettertypewisseling plaatsvindt. Het weblettertype wordt alleen gebruikt als het binnen de beginperiode beschikbaar is. Je view van de eerste pagina zal waarschijnlijk een fallback-lettertype laten zien, en daaropvolgende views zullen het gedownloade gecachete weblettertype gebruiken.<\/li>\n<\/ul>\n<p>Het gebruik van swap, fallback of optional kan een prestatieverbetering bieden.<\/p>\n<h3>Vermijd CSS @import<\/h3>\n<p>Met <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@import\">@import at-rule<\/a> kunnen CSS bestanden in andere worden opgenomen:<\/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>Dit lijkt een effectieve manier om kleinere componenten en lettertypen te laden. Helaas is elke @import render-blocking, en moet elk bestand in serie worden geladen en geparset.<\/p>\n<p>Meerdere <code>&lt;link&gt;<\/code> tags binnen HTML is meer effici\u00ebnt en laad CSS bestanden parallel:<\/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>Dat gezegd hebbende, dit is een beter idee&#8230;<\/p>\n<h3>Voeg CSS samen en verklein ze<\/h3>\n<p>Moderne build-tools, CSS-preprocessors zoals Sass en <a href=\"https:\/\/kinsta.com\/blog\/combine-external-css\/\">WordPress plugins kunnen alle onderdelen combineren in \u00e9\u00e9n groot CSS bestand<\/a>. Onnodige witruimte, opmerkingen en tekens worden vervolgens verwijderd om de bestandsgrootte tot een minimum te beperken.<\/p>\n<p>Meerdere bestanden vormen minder een prestatieprobleem sinds\u00a0 HTTP\/2\u00a0 <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-http3\/\">en hoger<\/a>, maar een enkel bestand vereist slechts \u00e9\u00e9n header en kan effici\u00ebnter worden gegzipt en in de cache worden opgeslagen.<\/p>\n<p>Afzonderlijke CSS bestanden zijn alleen praktisch als je een of meer stylesheets hebt die vaak worden gewijzigd &#8211; misschien meerdere keren per week. Zelfs dan kan de meestal statische CSS code nog steeds in \u00e9\u00e9n bestand worden gecombineerd.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/nl\/prijzen\/?plan=visits-business1&amp;interval=month\">Klanten van Kinsta<\/a> hebben toegang tot de <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/wordpress-cdn\/kinsta-cdn\/#code-minification-1\">codeminificatiefeature<\/a> in hun <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta dashboard<\/a> om hiermee te helpen. De feature stelt klanten in staat om automatische CSS en JavaScript minificatie in te schakelen met een simpele klik. Dit helpt bij het versnellen van een site zonder dat je hier iets voor hoeft te doen.<\/p>\n<h3>Vermijd Base64 encoding<\/h3>\n<p><a href=\"https:\/\/jpillora.com\/base64-encoder\/\">Tools kunnen afbeeldingen coderen naar base64 strings<\/a>, die je kan gebruiken als data URI&#8217;s in HTML <code>&lt;img&gt;<\/code> tags en CSS achtergronden:<\/p>\n<pre><code class=\"language-css\">.background {\n  background-image: url('data:image\/jpg;base64,ABC123...');\n}<\/code><\/pre>\n<p>Dit vermindert het aantal HTTP verzoeken, maar is nadelig voor de CSS performance:<\/p>\n<ul>\n<li>base64 strings kunnen 30% groter zijn dan hun binaire equivalent.<\/li>\n<li>browsers moeten de string decoderen voordat een afbeelding kan worden gebruikt, en<\/li>\n<li>als je een afbeeldingspixel wijzigt, wordt het hele CSS bestand ongeldig.<\/li>\n<\/ul>\n<p>Overweeg alleen base64 encoding als je zeer kleine, zelden veranderende afbeeldingen gebruikt waarvan de resulterende string niet aanzienlijk langer is dan een URL.<\/p>\n<p>Dat gezegd hebbende, gebruik gerust UTF8 codering voor herbruikbare SVG pictogrammen, bijv.<\/p>\n<pre><code class=\"language-css\">.svgbackground {\n  background-image: url('data:image\/svg+xml;utf8,');\n}<\/code><\/pre>\n<h3>Verwijder CSS hacks en IE fallbacks<\/h3>\n<p>Tenzij je pech hebt en een groot aantal Internet Explorer gebruikers hebt, kunnen IE conditionele stylesheets en hacks uit je CSS worden verwijderd. In de meeste gevallen zullen IE gebruikers nog steeds <em>iets<\/em> zien, vooral als je een mobile-first design gebruikt dat standaard een eenvoudiger lineair beeld laat zien. Het resultaat is misschien niet mooi, en het zal niet fantastisch zijn, maar je ontwikkelingsbudget kan beter worden besteed aan de toegankelijkheid voor alle gebruikers.<\/p>\n<h3>Preload CSS bestanden<\/h3>\n<p>De <code>&lt;link&gt;<\/code> tag biedt een optioneel <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTML\/Preloading_content\">preload attribuut<\/a> waarmee onmiddellijk een download kan worden gestart in plaats van te wachten op de echte verwijzing in de 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>Dit is vooral handig in WordPress en andere CMS&#8217;en waar een plugin een stylesheet verderop op de pagina kan toevoegen.<\/p>\n<h3>Gebruik critical inline CSS<\/h3>\n<p>Analysetools kunnen je de suggestie doen dat je &#8221; inline critical CSS&#8221;\u00a0 of &#8221; reduce render-blocking style sheets.&#8221; Dit verbetert de prestaties door:<\/p>\n<ol>\n<li>Essenti\u00eble stijlen te identificeren die worden gebruikt door above-the-fold elementen (die zichtbaar zijn terwijl de pagina wordt geladen)<\/li>\n<li>Inline die essenti\u00eble CSS in een <code>&lt;style&gt;<\/code> tag in je <code>&lt;head&gt;<\/code><\/li>\n<li>De resterende CSS asynchroon te laden om render-blocking te voorkomen. Dit kan je doen door de stylesheet te laden in een &#8220;print&#8221; stijle die de browser een lage prioriteit geeft. JavaScript schakelt vervolgens over naar een &#8220;all&#8221; mediastijl zodra de pagina is geladen (een <code>&lt;noscript&gt;<\/code> zorgt ervoor dat de CSS werkt als de JavaScript niet beschikbaar is):<\/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>Tools zoals <a href=\"https:\/\/github.com\/addyosmani\/critical\">critical<\/a> en <a href=\"https:\/\/github.com\/filamentgroup\/criticalCSS\">criticalCSS<\/a> kunnen helpen bij het extracten van stijlen voor in-view elementen.<\/p>\n<p>Deze techniek verbetert merkbaar de prestaties en verhoogt de auditscores. Sites of apps met consistente interfaces zouden eenvoudiger te implementeren moeten zijn, maar in andere scenario&#8217;s kan het lastiger zijn:<\/p>\n<ul>\n<li>Een build-tool is essentieel voor alle sites, behalve de eenvoudigste sites.<\/li>\n<li>De &#8220;fold&#8221; is op elk apparaat anders.<\/li>\n<li>Sites kunnen verschillende layouts hebben die allemaal hun eigen kritieke CSS hebben.<\/li>\n<li>CSS tools die met kritieke CSS werken kunnen moeite hebben met specifieke frameworks, client-side gegenereerde HTML en dynamische content.<\/li>\n<li>Vooral het laden van de eerste pagina kan profiteren van de techniek. CSS wordt gecachet voor de volgende pagina&#8217;s, dus extra inline-stijlen zullen het paginagewicht vergroten.<\/li>\n<\/ul>\n<h3>Gebruik rendering van media query&#8217;s<\/h3>\n<p>Een enkel samengevoegd en geminificeerd bestand zal de meeste sites ten goede komen, maar sites die een aanzienlijk aantal stijlen voor grote schermen bevatten, kunnen de CSS bestanden vaak beter splitsen en laden met behulp van een 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>Dit voorbeeld volgt de mobile-first methodologie. Mobiele apparaten laden <strong>core.css<\/strong> maar hoeven de overige stylesheets mogelijk niet te downloaden of te parsen.<\/p>\n<h3>Gebruik progressieve rendering<\/h3>\n<p>Progressieve rendering is een techniek die individuele stylesheets definieert voor afzonderlijke pagina&#8217;s of componenten. Het is zeer geschikt voor grote sites waar individuele pagina&#8217;s zijn opgebouwd uit een uitgebreide reeks componenten.<\/p>\n<p>Elk CSS bestand wordt onmiddellijk geladen voordat er in de HTML naar een component wordt verwezen.<\/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>Dit werkt goed in de meeste browsers. (Safari toont een lege pagina totdat alle CSS is geladen, maar het zou niet merkbaar slechter moeten zijn dan een enkele grote stylesheet.)<\/p>\n<p>Door Web Components te gebruiken, wordt ook het gebruik van scoped stijlen aangemoedigd die worden geladen wanneer het aangepaste element wordt weergegeven.<\/p>\n<h2>CSS prestaties optimaliseren<\/h2>\n<p>Verschillende CSS technieken en eigenschappen leggen op verschillende manieren druk op de browser, CPU, geheugen, bandbreedte en andere resources. De volgende tips kunnen je helpen onnodige verwerking en trage prestaties te voorkomen.<\/p>\n<h3>Gebruik moderne layouttechnieken (grid en flexbox)<\/h3>\n<p>Float-based layouts zijn moeilijk te maken, gebruiken talloze properties, vereisen voortdurende aanpassingen voor de marges en paddings, moeten worden beheerd met media queries en de verwerking ervan trekt zwaar op de browser. Ze waren in de praktijk jarenlang de enige mogelijke layoutmethode, maar ze zijn niet langer nodig. Gebruik ofwel:<\/p>\n<ul>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/responsive-webdesign\/#flexbox-layout\">CSS Flexbox<\/a> voor eendimensionale layouts die door kunnen lopen naar de volgende rij. Het is ideaal voor menu&#8217;s, afbeeldingengalerijen, kaarten, etc.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/nl\/blog\/responsive-webdesign\/#size-layout-elements-with-percentages-or-create-a-css-grid-layout\">CSS Grid<\/a> voor tweedimensionale layouts met expliciete rijen en kolommen. Het is ideaal voor paginalayouts.<\/li>\n<\/ul>\n<p>Beide zijn eenvoudiger te ontwikkelen, gebruiken minder code, worden sneller weergegeven en passen zich aan elk schermformaat aan zonder media query&#8217;s.<\/p>\n<p>Erg oude browsers herkennen moderne flexbox- en rasterproperties niet, elk element wordt in dat geval een blok. Toon ze in een eenvoudige, mobielachtige lineaire layout: <em>het is niet nodig om het ontwerp na te bootsen met op float gebaseerde fallbacks<\/em>.<\/p>\n<h3>Vervang afbeeldingen met CSS gradients en effecten<\/h3>\n<p>Kies waar mogelijk voor CSS code in plaats van afbeeldingen. Experimenteer met gradients, randen, straal, schaduwen, filters, blend modes, masks, clipping en pseudo-element effecten om bestaande afbeeldingen opnieuw te gebruiken of te vervangen.<\/p>\n<p>CSS-effecten gebruiken aanzienlijk minder bandbreedte, zijn gemakkelijker aan te passen en kunnen meestal worden geanimeerd.<\/p>\n<h3>Vermijd overmatig gebruik van dure properties<\/h3>\n<p>Je gebruikt misschien beknopte declaratieve code, maar sommige CSS vereist meer verwerking dan andere. De volgende properties triggeren painting-berekeningen die bij overmatig gebruik &#8221; duur\u201d kunnen uitvallen:<\/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>Gebruik waar mogelijk CSS overgangen en animaties<\/h3>\n<p>CSS overgangen en animaties zullen altijd vloeiender zijn dan door JavaScript aangedreven effecten die vergelijkbare eigenschappen wijzigen. In zeer oude browsers worden ze niet verwerkt, maar omdat deze waarschijnlijk op minder capabele apparaten worden uitgevoerd, is dat helemaal geen probleem.<\/p>\n<p>Vermijd echter overmatige animatie. Effecten moeten de gebruikerservaring verbeteren zonder de prestaties nadelig te be\u00efnvloeden of misselijkheid te veroorzaken. Check de <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-motion\">prefers-reduced-motion<\/a> media query en schakel animaties uit indien nodig.<\/p>\n<h3>Vermijd het animeren van properties die een re-layout triggeren<\/h3>\n<p>Het wijzigen van de afmetingen van een element (breedte, hoogte, opvulling, rand) of de positie (boven, onder, links, rechts, marge) kan ertoe leiden dat de hele pagina op elk animatieframe opnieuw moet worden ingedeeld. De meest effici\u00ebnte properties om te animeren zijn:<\/p>\n<ul>\n<li><strong><code>opacity<\/code><\/strong><\/li>\n<li><strong><code>filter<\/code><\/strong>: blur, contrast, schaduw en andere effecten<\/li>\n<li><strong><code>transform<\/code><\/strong>: een element translaten (verplaatsen), schalen of roteren<\/li>\n<\/ul>\n<p>Browsers kunnen de hardware-versnelde GPU gebruiken om deze effecten in hun eigen laag weer te geven, zodat alleen de composition-fase wordt be\u00efnvloed.<\/p>\n<p>Als je andere properties moet animeren, kan je de prestaties verbeteren door het element uit de paginaflow te halen met position: absolute.<\/p>\n<h3>Kijk uit met complexe selectors<\/h3>\n<p>Browsers zullen vaak snel de meest complexe CSS selectors parsen, maar door ze te vereenvoudigen, worden de bestandsgroottes kleiner en worden de prestaties verbeterd. Complexe selectors worden vaak gegenereerd wanneer je zeer geneste structuren maakt in CSS preprocessors zoals Sass.<\/p>\n<h3>Geef aan welke elementen zullen veranderen<\/h3>\n<p>Met de <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/will-change\">CSS will-change property<\/a> kan je waarschuwen hoe een element wordt gewijzigd of geanimeerd, zodat de browser van tevoren optimalisaties kan uitvoeren:<\/p>\n<pre><code class=\"language-css\">.myelement {\n  will-change: transform, opacity;\n}<\/code><\/pre>\n<p>Er kan een willekeurig aantal door komma&#8217;s gescheiden waarden worden gedefinieerd, maar de eigenschap mag alleen worden gebruikt als laatste redmiddel om bekende prestatieproblemen op te lossen. Je moet het niet op te veel elementen toepassen, en zorg ervoor dat je het voldoende tijd geeft om te initialiseren.<\/p>\n<h3>Overweeg CSS containment<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/CSS_Containment\">Containment<\/a> is een nieuwe CSS feature die de prestaties kan verbeteren doordat je ge\u00efsoleerde substructuren van een pagina kunt identificeren. De browser kan de verwerking optimaliseren door een specifiek DOM contentblok wel of <em>niet<\/em> te renderen.<\/p>\n<p>De <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/contain\">contain property<\/a> accepteert een of meer van de volgende waarden in een door spaties gescheiden lijst:<\/p>\n<ul>\n<li><strong><code>none<\/code>:<\/strong> containment wordt niet toegepast<\/li>\n<li><code><strong>layout<\/strong><\/code>: de layout van het element is ge\u00efsoleerd van de rest van de pagina \u2014 de content heeft geen invloed op andere elementen<\/li>\n<li><code><strong>paint<\/strong><\/code>: children van het element worden niet buiten de grens weergegeven<\/li>\n<li><strong><code>size<\/code>:<\/strong> de grootte van het element kan worden bepaald zonder child-elementen te controleren \u2014 de afmetingen zijn onafhankelijk van de inhoud<\/li>\n<\/ul>\n<p>Er zijn ook twee speciale waarden beschikbaar:<\/p>\n<ul>\n<li><code><strong>strict<\/strong><\/code>: Alle containment regels (behalve none) worden toegepast<\/li>\n<li><strong><code>content<\/code>:<\/strong> past layout en paint toe<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Een pagina heeft een <code>&lt;ul&gt;<\/code> lijst met daarin <code>contain: strict;<\/code> toegepast. Als je de content van een child <code>&lt;li&gt;<\/code> wijzigt, dan berekent de browser de grootte of positie van dat item, andere items in de lijst, of andere elementen op de pagina NIET opnieuw.<\/p>\n<\/aside>\n\n<p>CSS containment wordt <a href=\"https:\/\/caniuse.com\/mdn-css_properties_contain\">ondersteund door de meeste moderne browsers<\/a>. Er is geen ondersteuning in Safari of oudere applicaties, maar containment kan toch veilig worden gebruikt omdat dergelijke browsers de property simpelweg negeren.<\/p>\n<h3>Reageer op de Save-Data header<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/HTTP\/Headers\/Save-Data\">Save-Data<\/a> is een HTTP requestheader die aangeeft dat de gebruiker om minder gegevens heeft gevraagd. In sommige browsers heet dit &#8220;Lite&#8221; of &#8220;Turbo&#8221; modus.<\/p>\n<p>Indien ingeschakeld, wordt bij elk browserverzoek een <code>Save-Data<\/code> header verzonden:<\/p>\n<pre><code class=\"language-text\">GET \/main.css HTTP\/1.0\nHost: site.com\nSave-Data: on<\/code><\/pre>\n<p>De server kan dienovereenkomstig reageren wanneer Save-Data wordt gedetecteerd. In het geval van CSS kan het een eenvoudiger mobielachtige lineaire layout verzenden, een OS lettertype gebruiken, overschakelen naar blokkleuren of afbeeldingsachtergronden met een lage resolutie laden.<\/p>\n<p>Merk op dat de server de volgende header moet retourneren bij gewijzigde verzoeken om ervoor te zorgen dat minimale content niet in de cache wordt opgeslagen en opnieuw wordt gebruikt wanneer de gebruiker de Lite\/Turbo modus uitschakelt:<\/p>\n<pre><code class=\"language-text\">Vary: Accept-Encoding, Save-Data<\/code><\/pre>\n<p>De header kan ook worden gedetecteerd door JavaScript aan de clientzijde. De volgende code voegt een bestUX klasse toe aan het <code>&lt;html&gt;<\/code> element wanneer Save-Data <em>niet<\/em> is ingeschakeld:<\/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>Stylesheets kunnen dan dienovereenkomstig reageren zonder enige servermanipulatie:<\/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>De <a href=\"https:\/\/developer.mozilla.org\/docs\/Web\/CSS\/@media\/prefers-reduced-data\">prefers-reduced-data media query<\/a> biedt een CSS-only optie als alternatief, hoewel dit op het moment van schrijven door geen enkele browser wordt ondersteund:<\/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>Samenvatting<\/h2>\n<p>Er zijn veel opties om de CSS prestaties te optimaliseren, maar overweeg voor nieuwe projecten de volgende praktijken:<\/p>\n<ol>\n<li><strong>Gebruik een<\/strong> <a href=\"https:\/\/kinsta.com\/nl\/blog\/google-mobile-first-index\/\">mobile-first benadering<\/a>: Codeer eerst de eenvoudigste mobiele layout en voeg vervolgens verbeteringen toe voor grotere schermen en complexere browsers.<\/li>\n<li><strong>Splits CSS op in afzonderlijke bestanden met identificeerbare verantwoordelijkheden:<\/strong> Een CSS pre-processor of <a href=\"https:\/\/kinsta.com\/blog\/combine-external-css\/\">CMS plugin kan CSS partials combineren in een enkel bestand<\/a>.<\/li>\n<li><strong>Voeg een bouwstap toe:<\/strong> Er zijn tools beschikbaar die automatisch coderen, problemen identificeren, samenvoegen, minificeren en afbeeldingsgroottes verkleinen en meer. Automatisering maakt het leven gemakkelijker en je vergeet minder snel een optimalisatiestap.<\/li>\n<li><strong>Documenteer je stylesheets:<\/strong> een stijlgids met gedocumenteerde voorbeelden maakt het gemakkelijker om te werken met je code en deze te onderhouden. Je kan zonder problemen oude CSS identificeren en verwijderen.<\/li>\n<\/ol>\n<p>Ten slotte: <a href=\"https:\/\/kinsta.com\/nl\/blog\/beste-programmeertaal-om-te-leren\/#html-and-css\">leer CSS<\/a>! Hoe meer je weet, hoe minder code je hoeft te schrijven en hoe sneller je webtoepassing wordt. Het maakt je een betere ontwikkelaar, ongeacht de platforms en frameworks die je gebruikt.<\/p>\n<p><em>Welke andere tips heb je voor het optimaliseren van CSS prestaties? Deel ze in de reacties hieronder!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zelfs in 2021 blijven webprestaties een probleem. Volgens HTTP Archive vereist de gemiddelde pagina een download van 2MB, doet deze meer dan 60 HTTP verzoeken en &#8230;<\/p>\n","protected":false},"author":188,"featured_media":40199,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[340,406],"topic":[898],"class_list":["post-40192","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-css","tag-web-development","topic-wordpress-prestaties"],"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>Zo optimaliseer je CSS voor maximale siteprestaties<\/title>\n<meta name=\"description\" content=\"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.\" \/>\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\/nl\/blog\/optimaliseer-css\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo optimaliseer je CSS voor maximale siteprestaties\" \/>\n<meta property=\"og:description\" content=\"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-07T11:43:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-23T08:24:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-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=\"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@craigbuckler\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Craig Buckler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\"},\"author\":{\"name\":\"Craig Buckler\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/715d986404b06691ab3014e06596908e\"},\"headline\":\"Zo optimaliseer je CSS voor maximale siteprestaties\",\"datePublished\":\"2021-10-07T11:43:45+00:00\",\"dateModified\":\"2023-05-23T08:24:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\"},\"wordCount\":4975,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg\",\"keywords\":[\"css\",\"web development\"],\"articleSection\":[\"WordPress performance tutorials\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\",\"name\":\"Zo optimaliseer je CSS voor maximale siteprestaties\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg\",\"datePublished\":\"2021-10-07T11:43:45+00:00\",\"dateModified\":\"2023-05-23T08:24:56+00:00\",\"description\":\"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Zo optimaliseer je CSS voor maximale siteprestaties\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress prestaties\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-prestaties\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo optimaliseer je CSS voor maximale siteprestaties\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/715d986404b06691ab3014e06596908e\",\"name\":\"Craig Buckler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/craigbuckler\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo optimaliseer je CSS voor maximale siteprestaties","description":"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.","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\/nl\/blog\/optimaliseer-css\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo optimaliseer je CSS voor maximale siteprestaties","og_description":"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.","og_url":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2021-10-07T11:43:45+00:00","article_modified_time":"2023-05-23T08:24:56+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","type":"image\/jpeg"}],"author":"Craig Buckler","twitter_card":"summary_large_image","twitter_description":"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","twitter_creator":"@craigbuckler","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Craig Buckler","Geschatte leestijd":"25 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/"},"author":{"name":"Craig Buckler","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/715d986404b06691ab3014e06596908e"},"headline":"Zo optimaliseer je CSS voor maximale siteprestaties","datePublished":"2021-10-07T11:43:45+00:00","dateModified":"2023-05-23T08:24:56+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/"},"wordCount":4975,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","keywords":["css","web development"],"articleSection":["WordPress performance tutorials"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/","url":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/","name":"Zo optimaliseer je CSS voor maximale siteprestaties","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","datePublished":"2021-10-07T11:43:45+00:00","dateModified":"2023-05-23T08:24:56+00:00","description":"CSS kan er misschien onschuldig uitzien, maar de verwerking ervan kan behoorlijk wat kracht kosten. Gebruik deze gids om op de juiste manier CSS te optimaliseren en je siteperformance te verbeteren.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2021\/10\/optimize-css.jpeg","width":1460,"height":730,"caption":"Zo optimaliseer je CSS voor maximale siteprestaties"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/optimaliseer-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"WordPress prestaties","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-prestaties\/"},{"@type":"ListItem","position":3,"name":"Zo optimaliseer je CSS voor maximale siteprestaties"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/715d986404b06691ab3014e06596908e","name":"Craig Buckler","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/craigbuckler\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/40192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/188"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=40192"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/40192\/revisions"}],"predecessor-version":[{"id":43157,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/40192\/revisions\/43157"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/en"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/de"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/fr"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/es"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/translations\/nl"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/40192\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/40199"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=40192"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=40192"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=40192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}