It must be able to cache it's all content in browser.

I guess to do it it properly you need to make it PWA.

You can also just use proper HTTP cache headers. ETag and a very long Expires header.

Idea is to keep it light and accessible. PWA would be data heavy. The use case is in the article linked in the post description.