Есть гугл воркбокс, он из коробки реализует кэширование всяких картинок, данных которые идут через аяксы и т.д. и т.п.
https://developers.google.com/web/tools/workbox/gu... умеет работать с пушами и т.п. В доках есть также статья про это все
https://developer.mozilla.org/ru/docs/Web/API/Serv...
Для работы ему нужен ssl сертификат, либо может работать на локалхосте без него. Сервис воркер один на весь сайт, стартует и работает в фоне когда стартует браузер. У него есть доступ к index db
https://developer.mozilla.org/ru/docs/IndexedDB/Us... в которой тот же воркбокс и хранит весь кэш.
Из неприятного, чтобы сервис воркер начал данные перехватывать, страница сайта должна быть открыта после его установки. В общем сразу после первой установки нужно страницу перегружать через location.reload