[{"data":1,"prerenderedAt":269},["ShallowReactive",2],{"DefaultLayouten":3,"language-blog-slug-faster-nuxt-sites-on-netlify-i18n-slugs":134,"language-blog-slug-en-faster-nuxt-sites-on-netlify":138},{"app":4,"menu":31,"footer":66},{"githubUrl":5,"youtubeUrl":6,"linkedinUrl":7,"phoneNumber":8,"emailAddress":9,"legal":10,"addresses":20},"https:\u002F\u002Fgithub.com\u002Fvoorhoede\u002F","https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCzHuhQVYFRixtQN2-swcuGg","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fde-voorhoede","+31 20 2610 954","post@voorhoede.nl",[11,14,17],{"title":12,"value":13},"KvK","56017235",{"title":15,"value":16},"BTW","NL851944620B01",{"title":18,"value":19},"IBAN","NL14TRIO0320142078",[21,26],{"address":22,"city":23,"googleMapsLink":24,"postalCode":25},"Koivistokade 70","Amsterdam","https:\u002F\u002Fwww.google.com\u002Fmaps\u002Fplace\u002FDe+Voorhoede+%7C+Front-end+Development\u002F@52.396847,4.8700823,17z\u002Fdata=!3m1!4b1!4m5!3m4!1s0x47c5e21d502d2d59:0xbf570944a96ebf45!8m2!3d52.347647!4d4.8502154","1013 BB",{"address":27,"city":28,"googleMapsLink":29,"postalCode":30},"Koornmarkt 22","Delft","https:\u002F\u002Fwww.google.nl\u002Fmaps\u002Fplace\u002FKoornmarkt+22,+2611+EG+Delft\u002F@52.0093477,4.3573054,17z\u002F","2611 EG",{"title":32,"callToActions":33,"links":39},"Site Menu",[34],{"id":35,"title":36,"link":37},"163140902","Contact",{"__typename":38},"ContactRecord",[40,46,51,56,61],{"id":41,"title":42,"link":43},"163140904","Impact",{"__typename":44,"slug":45},"PageRecord","impact",{"id":47,"title":48,"link":49},"163140905","Services",{"__typename":50},"ServiceOverviewRecord",{"id":52,"title":53,"link":54},"163140906","Cases",{"__typename":55},"CaseOverviewRecord",{"id":57,"title":58,"link":59},"163140908","About us",{"__typename":44,"slug":60},"about-us",{"id":62,"title":63,"link":64},"d6WdFJq2SOuc3dWtpibbXQ","Work at",{"__typename":44,"slug":65},"work-at",{"links":67,"copyrightTitle":93,"copyrightLabel":94,"copyrightLink":95,"privacyTitle":96,"privacyLabel":97,"privacyLink":98,"certificatesGrid":99},[68,71,74,77,82,85,88],{"id":69,"title":42,"link":70},"144185264",{"__typename":44,"slug":45},{"id":72,"title":48,"link":73},"144185265",{"__typename":50},{"id":75,"title":53,"link":76},"144185266",{"__typename":55},{"id":78,"title":79,"link":80},"144185267","Blog",{"__typename":81},"BlogPostOverviewRecord",{"id":83,"title":58,"link":84},"144185268",{"__typename":44,"slug":60},{"id":86,"title":36,"link":87},"144185269",{"__typename":38},{"id":89,"title":90,"link":91},"144185270","FAQ",{"__typename":44,"slug":92},"faq","Creative Commons licence and disclaimer","CC BY 4.0","https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002F","De Voorhoede privacy statement (pdf)","Privacy statement","https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1763455455-vh-isms-006-privacy-statement-de-voorhoede-en.pdf",[100,112,123],{"id":101,"image":102,"link":107},"Xq4bBfg_TZ6Fkjax9mkbLQ",{"url":103,"alt":104,"width":105,"height":106},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1687353463-b-corp-logo-black-rgb.png","B Corp logo",404,680,{"__typename":108,"id":109,"title":110,"url":111},"ExternalLinkRecord","fGW1ak8XQYaYDLkBSyncog","B Corp","https:\u002F\u002Fwww.bcorporation.net\u002Fen-us\u002Ffind-a-b-corp\u002Fcompany\u002Fde-voorhoede\u002F",{"id":113,"image":114,"link":119},"c5mCXRTiSraRIB25fw1p7Q",{"url":115,"alt":116,"width":117,"height":118},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1687353461-dda-boxlogo-black.png","Dutch Digital Agencies logo",627,480,{"__typename":108,"id":120,"title":121,"url":122},"P6Jh7B0cTv2cKyNEeKVWVQ","Dutch Digital Agencies","https:\u002F\u002Fdutchdigitalagencies.com\u002Fleden\u002Fde-voorhoede\u002F",{"id":124,"image":125,"link":129},"MT5SCyNxSTSr_v5eeATMZw",{"url":126,"alt":127,"width":128,"height":128},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1775730283-dnv.png","DNV logo",518,{"id":130,"title":131,"link":132},"BRtNB5HnT5i-7HkA8IYzBw","DIV",{"__typename":44,"slug":133},"impact\u002Fdigitale-producten-privacy-by-design",[135],{"locale":136,"value":137},"en","faster-nuxt-sites-on-netlify",{"page":139},{"slug":137,"i18nSlugs":140,"social":142,"title":143,"subtitle":79,"isArchived":146,"headerIllustration":145,"date":147,"authors":148,"introTitle":157,"items":158,"pivots":256,"relatedBlogPosts":267,"tags":268,"onMountedScript":162,"onUnmountedScript":162},[141],{"locale":136,"value":137},{"title":143,"description":144,"image":145},"Faster Nuxt sites on Netlify","From Nuxt and Netlify we get a lot performance out-of-the-box. But we can make things even faster by tuning Nuxt and Netlify to work together!",null,false,"2020-05-08T02:00:00.000+02:00",[149],{"name":150,"lastName":151,"slug":152,"image":153},"Frank","Warnaar","frank",{"url":154,"alt":145,"width":155,"height":156},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1683534610-frank.jpg",2049,2732,"Tuning Nuxt and Netlify to work together",[159,164,169,172,178,182,187,190,194,198,201,204,207,211,221,224,229,232,236,239,242,249,252],{"__typename":160,"id":161,"title":162,"body":163},"TextSectionRecord","4584459","","\u003Cp>Nuxt and Netlify both aim to make user experiences as fast and smooth as possible. From Nuxt&rsquo;s homepage:\u003C\u002Fp>",{"__typename":165,"id":166,"quote":167,"author":168},"QuoteRecord","4584481","With Nuxt.js, your application will be optimized out of the box. […] To squeeze every unnecessary bit out of your app Nuxt includes a bundle analyzer and lots of opportunities to fine-tune your app.","Why Nuxt?",{"__typename":160,"id":170,"title":162,"body":171},"4584461","\u003Cp>Netlify, as a platform, has a world-wide Content Delivery Network (CDN) and a \u003Ca href=\"https:\u002F\u002Fwww.netlify.com\u002Fblog\u002F2017\u002F02\u002F23\u002Fbetter-living-through-caching\u002F\" target=\"_blank\" rel=\"noopener\">smart resource caching strategy\u003C\u002Fa> setting \u003Cem>max-age=0, must-revalidate, public\u003C\u002Fem>, effectively telling the browser to cache all resources but to check-in with the server to verify it&rsquo;s still fresh.\u003C\u002Fp>\u003Cdiv>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">So with Nuxt and Netlify we get a lot performance out-of-the-box. But we can make things even faster by tuning Nuxt and Netlify to work together. This is how:\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cul>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Cache assets forever\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Split assets from app bundle\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">Remove unused Nuxt features\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">Serve modern bundles\u003C\u002Fspan>\u003C\u002Fli>\u003C\u002Ful>",{"__typename":173,"id":174,"title":162,"body":175,"linkLabel":176,"linkUrl":177},"CallToActionRecord","5454666","\u003Cp>Nuxt is powered by Vue.js. Do you want to become a Vue master? During our two day hands-on workshop we&rsquo;ll teach you everything you need to know to build large performant web apps with Vue.\u003Ca href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fvuemaster\">\u003C\u002Fa>\u003C\u002Fp>","Join our Vue masterclass","https:\u002F\u002Fwww.voorhoede.nl\u002Fvuemaster",{"__typename":160,"id":179,"title":180,"body":181},"4584468","Cache assets forever","\u003Cp>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">Nuxt does a great job by hashing all of its JavaScript bundles, making sure each bundle has a unique filename. When the bundle content changes, the filename changes as well. This enables us to cache them forever! Nuxt serves bundles from the \u003C\u002Fspan>\u003Cem>\u003Cspan class=\"inline-code author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u002F_nuxt\u002F\u003C\u002Fspan>\u003C\u002Fem>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">&nbsp;folder. Let&rsquo;s configure Netlify to cache files in this folder forever:\u003C\u002Fspan>\u003C\u002Fp>",{"__typename":183,"id":184,"language":185,"body":186},"CodeBlockRecord","4584469","yaml","# static\u002F_headers\n\n# docs: https:\u002F\u002Fwww.netlify.com\u002Fdocs\u002Fheaders-and-basic-auth\u002F#multi-key-header-rules\n\u002F_nuxt\u002F*\n  Cache-Control: max-age=365000000\n  Cache-Control: immutable",{"__typename":160,"id":188,"title":162,"body":189},"4584501","\u003Cp>This strategy can be applied for other assets as well. Basically, all fonts and images can be cached. Nuxts \u003Cem>assets\u003C\u002Fem> folder comes into the picture here. Let&rsquo;s try to move as many assets as possible from the \u003Cem>static\u003C\u002Fem> folder to the \u003Cem>assets\u003C\u002Fem> folder. Assets in this folder are hashed and end up in the \u003Cem>\u002F_nuxt\u002F\u003C\u002Fem> folder after a build, just like our bundles. Now all these assets will be cached forever too!\u003C\u002Fp>",{"__typename":160,"id":191,"title":192,"body":193},"4584502","Split assets from app bundle","\u003Cp>Now that we&rsquo;re talking about assets, there is one kind of asset that impacts your performance more than you would think: SVG icons. There&rsquo;s a good chance you&rsquo;ve set up \u003Cem>vue-svg-loader\u003C\u002Fem> to load your icons. And there&rsquo;s good reason to: having SVGs inlined in the html output enables us to do cool things like overwriting styling properties from our CSS and animating them.\u003C\u002Fp>\u003Cp>However, this loading strategy comes with a price: our icons are included in our \u003Cem>app.js\u003C\u002Fem> bundle. Therefore our icons impact the critical path for our site to load and become interactive.\u003C\u002Fp>\u003Cp>Fortunately, we can solve this by using \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt-community\u002Fsvg-sprite-module\" target=\"_blank\" rel=\"noopener\">Nuxt SVG sprite\u003C\u002Fa>: a module that sprites all your SVG assets together and serves them as one SVG file. This single SVG file gets hashed and ends up in the \u003Cem>\u002F_nuxt\u002F\u003C\u002Fem>&nbsp; folder, so Netlify will leverage caching on our icons as well!\u003C\u002Fp>\u003Cp>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">The Nuxt SVG sprite\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> module provides great developer experience, by injecting a global component to use your icons in your templates:\u003C\u002Fspan>\u003C\u002Fp>",{"__typename":183,"id":195,"language":196,"body":197},"4584665","html","\u003Csvg-icon name=\"sample\" \u002F>",{"__typename":160,"id":199,"title":162,"body":200},"4584666","\u003Cp>This will output the following HTML:\u003C\u002Fp>",{"__typename":183,"id":202,"language":196,"body":203},"4584667","\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n    \u003Cuse href=\"\u002F_nuxt\u002F722f7bfaeddba2b3577b8f83c9ce5ed0.svg#i-sample\" xlink:href=\"\u002F_nuxt\u002F722f7bfaeddba2b3577b8f83c9ce5ed0.svg#i-sample\">\u003C\u002Fuse>\n\u003C\u002Fsvg>",{"__typename":160,"id":205,"title":162,"body":206},"4584668","\u003Cp>The effect of the \u003Ccode>&lt;use&gt;\u003C\u002Fcode> tag is \u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FSVG\u002FElement\u002Fuse\" target=\"_blank\" rel=\"noopener\">like the original SVG nodes are cloned\u003C\u002Fa>, enabling us to still treat it like an inline SVG for styling purposes, without affecting our critical path.\u003C\u002Fp>\u003Cp>If you need IE11 support, be aware \u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FSVG\u002FElement\u002Fuse#Browser_compatibility\" target=\"_blank\" rel=\"noopener\">IE11 doesn&rsquo;t support the \u003Ccode>&lt;use&gt;\u003C\u002Fcode> tag with external URI&rsquo;s\u003C\u002Fa>. This can be solved by using svg4everybody: a package to fall back to loading sprites over XHR and injecting them into the HTML.\u003C\u002Fp>",{"__typename":160,"id":208,"title":209,"body":210},"4584670","Remove unused features","\u003Cp>By default your Nuxt websites ships an \u003Cem>app.js\u003C\u002Fem> bundle containing all core features. But what if we don&rsquo;t use some of these features? It&rsquo;s a waste to let users download and parse these excessive kilobytes of JavaScript.\u003C\u002Fp>",{"__typename":212,"id":213,"image":214,"caption":216,"fullWidth":219,"captionPosition":220},"ImageRecord","4584671",{"url":215,"alt":216,"width":217,"height":218},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1587475328-xwunpzpw.jpeg","Nuxt app.js size (48kb default vs 42kb with fetch and validate disabled)",1600,608,true,"bottom",{"__typename":160,"id":222,"title":162,"body":223},"4584685","\u003Cp>Since \u003Ca href=\"https:\u002F\u002Fnuxtjs.org\u002Fguide\u002Frelease-notes#v2.10.0\" target=\"_blank\" rel=\"noopener\">Nuxt 2.10.0\u003C\u002Fa> an undocumented, powerful and yet dangerous feature has been released. It&rsquo;s now possible to disable unused features in Nuxt. To research how much we can shave off our \u003Cem>app.js\u003C\u002Fem>, I created an empty Nuxt project and disabled \u003Cem>fetch\u003C\u002Fem> and \u003Cem>validate\u003C\u002Fem>. By doing so, our \u003Cem>app.js\u003C\u002Fem> bundle size reduced from 48kb to 42kb (13%).\u003C\u002Fp>",{"__typename":212,"id":225,"image":226,"caption":228,"fullWidth":219,"captionPosition":220},"4584686",{"url":227,"alt":228,"width":217,"height":218},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1587475484-bnlrsbxg.jpeg","Nuxt app.js size (48kb default vs 28kb with all core features disabled)",{"__typename":160,"id":230,"title":162,"body":231},"4584687","\u003Cp>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">By disabling all Nuxt features, we were able to bring it down to 28kb\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z s-lparen\"> \u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z h-lparen\">(42%).\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> Of course there&rsquo;s no point in disabling all Nuxt features, but it&rsquo;s nice to see we&rsquo;re able to shave off that much.\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>Nuxt&rsquo;s core contributor \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt.js\u002Fpull\u002F6287#issuecomment-525258448\" target=\"_blank\" rel=\"noopener\">mentioned feature detection might be used in Nuxt 3\u003C\u002Fa> to automagically enable features once you&rsquo;re using them. So this optimisation might be automated in the future. Awesome!\u003C\u002Fp>",{"__typename":160,"id":233,"title":234,"body":235},"4584899","Serve modern bundles","\u003Cp>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">You can run \u003C\u002Fspan>\u003Cspan class=\"inline-code author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Cspan>nuxt generate \u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"inline-code\">\u003Cb>\u003Cspan>--\u003C\u002Fspan>\u003C\u002Fb>\u003C\u002Fspan>\u003Cspan class=\"inline-code author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Cb>\u003Cspan>modern\u003C\u002Fspan>\u003C\u002Fb>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> \u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fnuxtjs.org\u002Fapi\u002Fconfiguration-modern\" href=\"https:\u002F\u002Fnuxtjs.org\u002Fapi\u002Fconfiguration-modern\" rel=\"noreferrer nofollow noopener\">to tell Nuxt to output two versions of each JavaScript bundle\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">: a legacy one and a modern one. The generated HTML will now contain two script tags per bundle:\u003C\u002Fspan>\u003C\u002Fp>",{"__typename":183,"id":237,"language":196,"body":238},"4584900","\u003Cscript nomodule=\"\" src=\"\u002F_nuxt\u002Fa230eea68ca24259c016.js\" defer=\"\">\u003C\u002Fscript>\n\u003Cscript type=\"module\" src=\"\u002F_nuxt\u002F0ce5ca1f220b7ebc1f9a.js\" defer=\"\">\u003C\u002Fscript>",{"__typename":160,"id":240,"title":162,"body":241},"4584901","\u003Cp>\u003Cspan class=\"attrlink url author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fcaniuse.com\u002F#feat=es6-module\" href=\"https:\u002F\u002Fcaniuse.com\u002F#feat=es6-module\" rel=\"noreferrer nofollow noopener\">Legacy browser&rsquo;s don't support JavaScript modules\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">. Therefore they won&rsquo;t load the modern bundles. Modern browsers supporting esmodules,\u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fv8.dev\u002Ffeatures\u002Fmodules#browser\" href=\"https:\u002F\u002Fv8.dev\u002Ffeatures\u002Fmodules#browser\" rel=\"noreferrer nofollow noopener\"> won&rsquo;t load the legacy scripts\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> since Nuxt attaches a \u003C\u002Fspan>\u003Cspan class=\"inline-code author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Cspan>nomodule\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> attribute. This enables us to serve code optimised for the users browser!\u003C\u002Fspan>\u003C\u002Fp>",{"__typename":212,"id":243,"image":244,"caption":246,"fullWidth":219,"captionPosition":220},"4584902",{"url":245,"alt":246,"width":247,"height":248},"https:\u002F\u002Fwww.datocms-assets.com\u002F6524\u002F1587475797-artboard.jpg","Total bundle sizes (114kb without modern flag vs 104kb with modern flag)",2031,585,{"__typename":160,"id":250,"title":162,"body":251},"4584903","\u003Cp>For voorhoede.nl, we&rsquo;ve been able to reduce our total JavaScript footprint from 114 kilobytes to 104 kilobytes (9% reduction).\u003C\u002Fp>\u003Cp>Please notice Nuxt now builds a doubled number of JavaScript bundles, increasing your build minutes usage on Netlify. If this is problematic, check out our blog post 10x faster Nuxt builds on Netlify.\u003C\u002Fp>",{"__typename":160,"id":253,"title":254,"body":255},"4584905","More performance optimisations","\u003Cdiv>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Want to make your Nuxt apps even faster? Here&rsquo;s a few more suggestions of what you could do:\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cul class=\"listtype-bullet listindent1 list-bullet1\">\u003Cli>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">Make sure to use the woff2 format and \u003C\u002Fspan>\u003Cspan class=\"inline-code author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Cspan>font-display: swap\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> for your fonts\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Add brotli: \u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">\u003Ca class=\"attrlink\" data-target-href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=IWPDI01DsAo&amp;feature=youtu.be&amp;t=1638\" href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=IWPDI01DsAo&amp;feature=youtu.be&amp;t=1638\" target=\"_blank\" rel=\"noopener\">planned for Netlify\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 s-lparen\"> \u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 h-lparen\">(no\u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\"> timeline), use Cloudflare for now\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Add \u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">\u003Ca class=\"attrlink\" data-target-href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\" href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\">extra caching with a Service Worker\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 s-lparen\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\" href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\" rel=\"noreferrer nofollow noopener\"> \u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 h-lparen\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\" href=\"https:\u002F\u002Fwww.voorhoede.nl\u002Fen\u002Fblog\u002Finstant-static-web-pages-with-service-worker\u002F\" rel=\"noreferrer nofollow noopener\">(PWA)\u003C\u002Fa>\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Lazy load heavy parts using dynamic imports. \u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">Markus Oberlehner wrote an \u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fmarkus.oberlehner.net\u002Fblog\u002Fhow-to-drastically-reduce-estimated-input-latency-and-time-to-interactive-of-ssr-vue-applications\u002F\" href=\"https:\u002F\u002Fmarkus.oberlehner.net\u002Fblog\u002Fhow-to-drastically-reduce-estimated-input-latency-and-time-to-interactive-of-ssr-vue-applications\u002F\" rel=\"noreferrer nofollow noopener\">excellent blog post\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\"> about this\u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">.\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Note: using server push\u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 s-lparen\"> \u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9 h-lparen\">(for\u003C\u002Fspan>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\"> font files, etc) is no longer encouraged due to \u003C\u002Fspan>\u003Cspan class=\"attrlink url author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">\u003Ca target=\"_blank\" class=\"attrlink\" data-target-href=\"https:\u002F\u002Fcommunity.netlify.com\u002Ft\u002Fconditional-headers-based-on-user-agent\u002F415\u002F7\" href=\"https:\u002F\u002Fcommunity.netlify.com\u002Ft\u002Fconditional-headers-based-on-user-agent\u002F415\u002F7\" rel=\"noreferrer nofollow noopener\">Netlify disabling server push after experiencing issues\u003C\u002Fa>\u003C\u002Fspan>\u003Cspan class=\" author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8z86zfz82zwwlz75zz122zz76zz70zz88zmz79zz66zz85zbyz80zz85zn9z71zz75z81z79zrz89zfz74z\">. It&rsquo;s uncertain when and if Netlify will re-enable server push.\u003C\u002Fspan>\u003C\u002Fli>\u003C\u002Ful>\u003Cdiv>\u003Cspan class=\" author-d-4z65zz66zl57z75zyiz66zfr2fz87zwz89znuj6z89zdz88zz68zaz83zz76zz73zgwz79zz76zz79zz122zyz65zz73zz74zz81zgmz71zp52ld9\">Have fun making the web faster!\u003C\u002Fspan>\u003C\u002Fdiv>",[257],{"title":258,"body":259,"links":260,"mailchimpValue":162,"mailchimpName":162,"mailchimpId":162,"formType":162,"contactPerson":145},"Also in love with the web?","\u003Cp>For us, that’s about technology and user experience. Fast, available for all, enjoyable to use. And fun to build. This is how our team bands together, adhering to the same values, to make sure we achieve a solid result for clients both large and small. Does that fit you?\u003C\u002Fp>\n",[261],{"__typename":262,"id":263,"title":264,"link":265},"InternalLinkRecord","163140992","Join our team",{"__typename":44,"slug":266},"jobs",[],[],1776256150226]