Возможно ли действительно постоянное хранение в прогрессивном веб-приложении? - PullRequest
0 голосов
/ 21 июня 2019

Я читал это руководство по автономному хранилищу для PWA, в котором описаны два API хранилища, Cache API и IndexedDB, однако кажется, что ни один из вариантов хранилища не является действительно постоянным. API Cache является временным по своей природе, и данные IndexedDB могут быть стерты, когда пользователь очистит кеш браузера.

Итак, возможно ли иметь действительно постоянное хранилище в PWA? То, что я пытаюсь сделать, это:

  1. Пользователь заходит на мой сайт на своем смартфоне, и я генерирую уникальный идентификатор в JavaScript.
  2. Они нажимают «добавить на домашний экран» на iOS или нажимают «добавить на домашний экран» на Android.
  3. PWA добавляется в их телефон. На этом этапе я хотел бы постоянно хранить этот уникальный идентификатор.

Есть ли способ, которым я могу это сделать? Может быть API, о котором я не знаю? Мне нужен только небольшой уникальный код, так как этот PWA не предназначен для того, чтобы пользователи могли входить в систему с помощью файлов cookie.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Как уже сказал Матиас, достичь цели с помощью PWA невозможно, так как пользователь может стереть все ранее сгенерированные данные.

Итак, короче говоря, вы должны использовать какое-то другое решение для обеспечения "действительно постоянного хранения".

Например, в личном проекте PWA я использую Cloud Firestore . Он также предлагает очень щедрый уровень бесплатного пользования, который вы можете использовать, и он даже позволяет сохранять в автономном режиме, предоставляя полные операции CRUD вашему приложению (даже если он отключен!).
Сервисные работники через Cache API разрешают кэшировать только GET Requests, но не POST.

Я написал другой ответ об этом на SO. И здесь вы можете найти официальную документацию.

0 голосов
/ 22 июня 2019
нет

Нет
Пользователь может удалить PWA (если он установлен на Android) и очистить кеш своего браузера от всего, что есть на вашем PWA.
Затем, если они приедут снова, вам нужно будет сгенерировать для них новый идентификатор.
Но вы бы ничего не знали об их предыдущем идентификаторе, если бы у вас не было логина, привязанного к уникальным пользователям.

...