Я создаю новое веб-приложение, которое должно работать без сбоев даже при отсутствии подключения к Интернету. Я выбрал Angular и создаю PWA, поскольку он имеет встроенные функции, позволяющие приложению работать в автономном режиме. Пока что у меня есть работник службы, работающий безупречно и управляемый файлом манифеста, он очень хорошо кэширует статический контент, и я настроил его для кеширования нескольких запросов API, которые я хочу использовать, пока приложение отключено.
В дополнение к этому, я использовал localStorage для хранения попыток вызывать запросы API на размещение, публикацию и удаление, когда пользователь находится в автономном режиме. После восстановления подключения к Интернету запросы, хранящиеся в localStorage, отправляются на сервер.
Это далеко в моем доказательстве концепции, пользователь может получить доступ к контенту в автономном режиме, редактировать данные, и данные синхронизируются с сервером после восстановления подключения пользователя к Интернету. Однако здесь начинается мое затруднительное положение. Данные запроса API кэшируются автоматически работником службы, как определено в файле манифеста, и есть отдельное хранилище данных для редактирования данных в автономном режиме. Это приводит к ситуации, когда пользователь редактирует некоторые данные, сохраняет данные, обновляет страницу, а данные обслуживаются кэшированным API сервис-воркера.
Есть ли встроенный механизм для обновления данных API, автоматически кэшируемых сервис-воркером? Я не хочу пытаться распаковывать это вручную, так как это кажется хакерским, и я не могу представить, что это станет доказательством будущего по мере развития сервис-воркеров.
Если стандартного способа добиться того, что мне нужно, не существует, часто ли разработчики полностью контролируют автономные данные, вручную сохраняя их в IndexedDB / localStorage? то есть я мог бы вызывать запросы API и писать некоторый код, который кэширует результаты в структурированном формате в IndexedDB для формирования автономной базы данных, затем записывает обратно в автономную базу данных всякий раз, когда пользователь редактирует некоторые данные, и загружает любые изменения данных, когда пользователь возвращается онлайн. Я не вижу в этом никаких технических проблем, просто кажется, что нужно приложить много усилий для достижения чего-то, что, как я надеялся, будет стандартной функциональностью.
Я новичок в разработке с помощью Angular, но у меня есть многолетний опыт разработки в других областях. Так что, пожалуйста, простите меня, если я задаю очевидные вопросы, я просто не могу найти хорошую статью о передовых методах работы с хранилищем данных с работниками службы.
Спасибо