Yeah, at least for the caching part, it seems like you should let that be the browser's responsibility, and set up Expires headers/etc appropriately. But what about the offline viewing use case? What are some good solutions to that these days?
There are quirks, sure, but it's actually designed for asset caching, unlike localStorage
You really need to plan ahead carefully if you're using the appcache, which I think changes the definition from "a nice tool, with some quirks" to "a complicated feature that you have to understand completely before implementing."
With that in mind, I think bootup.js is an interesting alternative if you can work around its other deficiencies.