Задать вопрос
@accountnujen

Можно ли запретить обновления на PWA?

Есть PWA. Приложение заметок. Исходный код открыт. Данные заметок хранятся на устройстве пользователя.
Возможно ли сделать так, чтобы в случае если я (разработчик) изменю код - у пользователей всё равно открывалась кэшированная версия и я не мог насильно обновить PWA?

Я попытался закешировать всё, но на данный момент при открытии PWA сразу идёт get запрос на service.js, который возвращает ему 304 (данные не изменились). Сейчас я могу просто переписать его и насильно обновить приложение у пользователя, добавив скрипт, который отправит мне на сервер заметки пользователя. Для обновления ему нужно просто закрыть приложение и открыть снова. Мне нужно каким-то образом гарантировать, что без ведома пользователя я не могу ничего сделать. Есть ли способы?
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • Skillbox
    Профессия 1С-программист
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@rPman
Штатно - нет.

PWA это в первую очередь Web приложение, и идеологически браузеры в принципе не дают никакого контроля пользователю над версиями (даже кеш там уже давно не принципиальный).

Пользователь может разработать расширение браузера, через который будет работать PWA (на android это будет проблематично, но вроде firefox можно сделать тем что поддерживает webview а через него уже будет работать PWA но надо изучать вопрос), и в этом расширении блокировать запросы и соответственно обновление (не подмена, поэтому нужно смотреть принципиальную возможность так сделать, а то после блокировки приложение может думать что произошла ошибка и соответственно реагировать). Как минимум с гарантией можно отслеживать изменения файлов и выдавать предупреждение - типа 'все, приложение обновилось, назад пути нет'.

Еще можно поставить между браузером и интернетом особо умную прокси, она и проконтролирует, и закеширует как надо, игнорируя заголовки, и подменит контент на необходимый...

И конечно модификация самого браузера, тут возможно любое поведение.

p.s. если вам нужно идеологически все же найти способ дать такую гарантию, то ваше приложение может работать через посредника, которому вы оба (разработчик приложения и пользователь) доверяете и который не будет делать гадости (например ему это не выгодно)... во времена хайпа децентрализованных сетей и блокчейна такие идеи витали, да и сейчас почему нет... можно представить сеть валидаторов (без блокчейна само собой), которые проверяют и может даже хостят и кешируют код (но не обязательно), а приложение на клиенте опрашивает их всех и загружает только то что они предоставляют.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы