в зависимости от индивидуальности приложения Я иногда отображаю весь сайт / приложение в сервисном работнике, когда сервисный работник установлен / активирован. Я написал пример приложения, которое я сделал в октябре прошлого года для конференции: https://love2dev.com/pwa/pubcon/
Что касается стратегии, я меняю вещи. Для данных (думаю JSON) я склонен кешировать в IndexedDB (мне нравится localforage b / c, это просто). Для ресурсов сайта (HTML, JS, CSS, шрифты и часто мультимедиа) я использую кэш рабочего сервиса. Если сайт загружен мультимедиа, я сохраняю изображения и видео в IDB b / c iOS, ограничивая кэш рабочего сервиса до 50 МБ. 50 МБ должно быть более чем достаточно для основных ресурсов любого веб-приложения, так как они должны измеряться в КБ, а не в МБ. iOS дает вам несколько ГБ хранилища IDB, в зависимости от того, сколько дискового пространства доступно на устройстве. Я создал несколько приложений SAAS, используя эту стратегию, и никогда не использовал квоты для данных. Конечно, много видео или изображений будут занимать больше места, и вам нужно следить за ошибками превышения квоты.
Пользователям также будет предложено дать разрешение и на расширенное хранилище, поэтому имейте в виду этот барьер, так как вам может потребоваться информировать пользователя об этом.