I am fond of a technique where I make a small, few kilobyte version of an image, and embed it as an inline base64-encoded data URL on the page, and layer the real image that’s normally stored in a file over that. The blurry version of the image loads instantly, so the layout, the colors and the rough shape of the image are right from the start preventing the infamous “Flash of unstyled content” style loading artefacts, and a few kilobytes don’t affect the page load time basically at all.
You can see an instance of this technique here. It’s a site I created with Zola: https://saunoja.jp
It would be very nice, if Zola supported a global function called “data_url” (or similar) that would load an arbitrary resource from a file as binary, and output it as base 64-encoded data URL. In combination with the image processing function, it would make this technique a lot easier and quicker to use.
I’m willing to contribute a PR, if this seems something that Zola would like to support.