One thing I’d consider doing right up front is dropping the size of your network requests. As an example, the first image on your blog is at a resolution of 2976x2717 but being served at 235x215 (7.9% of the original file).
Most of the other images on your homepage also are very near or over 1MB which is significant considering the size they’re being displayed at. Once the page has loaded, I’m actually seeing a load time of about 1s on subsequent loads due to your resources now being cached. Disabling the cache though kicks the page load time back to 9s or more and this is browsing with a pretty snappy connection to the internet.
Something else I noticed was the deferment of
menu.js due to the size of the resources that come before it (see screenshot below). It is best practice to place scripts at the bottom of the page so they don’t block the page from rendering, but because 7.2MB of resources need to download in parallel before main.js can be loaded in this case your script is being deferred from loading due to large network requests.
Netlify can run some post-processing for you at the conclusion of your build (see: https://docs.netlify.com/site-deploys/post-processing/) as well as transform large images for you via their large file service (see: https://docs.netlify.com/large-media/transform-images/#request-transformations) but ultimately you’ll want to size down images yourself to improve load times.