Over the last couple of weeks I've been reading Jeremy's excellent book Going Offline. It's a step by step exploration of Service Workers. If you're not sure what a Service Worker is the Mozilla Developer Network has a series of articles to get you up to speed:
Service workers essentially act as proxy servers that sit between web applications, the browser, and the network (when available). They are intended, among other things, to enable the creation of effective offline experiences, intercept network requests and take appropriate action based on whether the network is available, and update assets residing on the server. They will also allow access to push notifications and background sync APIs.
I already had a service worker on this site that had been built with Google's Workbox library, but it always felt a little like "magic" to me. I wasn't entirely sure what was going on under the hood, and I only ever managed to get it to do some caching of static assets, nothing more interesting than that. It felt like I was learning how to use a library, not the underlying tool.
To that end, this site now has its own home-grown, organic, corn fed, Service Worker.
As well as the caching of static assets it now cleans up after itself by deleting old caches, and more importantly will serve an off-line page if the user's connection goes down. That page isn't anything special right now, but one of the techniques that Jeremy talks about is caching pages that the user has visited, so at least they can load something from the past. One for me to think about.
I highly recommend picking up a copy of Going Offline, it's a brilliant read and a great introduction into the power of Service Workers.
Everyone has an idea about how to make it easier to find needles in the haystack, but no-one bothers to ask what all this hay is doing here in the first place.