Я разрабатываю приложение PWA с ionic v5, и мне нужно сохранить некоторый контент в автономном режиме, чтобы представить его пользователям. Я думаю использовать Capacitor для публикации моего веб-приложения в родном приложении в качестве альтернативы Cordova, но хранение данных является важным моментом моего приложения. Являются ли конденсаторные хранилища и хранилища Cordova одинаковыми?
Для PWA: хранилище конденсаторов возвращается к использованию localStorage
. В то время как Ionic Storage (использующий Cordova) использует IndexedDB
, WebSQL
и localstorage
именно в таком порядке.
Являются ли конденсаторные хранилища и хранилища Cordova одинаковыми?
Вкратце: нет. Хранилище сильно зависит от платформы, на которой работает ваше приложение. Capacitor и Cordova придерживаются другого подхода в этом отношении. Они будут автоматически использовать соответствующую локальную систему хранения для каждой платформы.
Как выбрать хранилище для нативных приложений:
Для высокопроизводительного хранилища: используйте Ionic Storage, в котором используется плагин Cordova SQLite. Это доступ на основе ключ-значение, но по умолчанию используется SQLite. Однако при работе в Интернете или в качестве Progressive Web App Storage попытается использовать IndexedDB, WebSQL и localstorage в указанном порядке.
Для случайного хранения: если вы хотите хранить данные, которые должны быть постоянными, но не требуют высокого уровня запросов, используйте Конденсаторное хранилище. Он будет использовать UserDefaults
на iOS и SharedPreferences
на Android.
Но этот API вернется к использованию localStorage при работе в качестве прогрессивного веб-приложения.
Для неважных данных: вы можете просто использовать localStorage и не нуждаться в каком-либо дополнительном механизме хранения.
Спасибо за ваш ответ @pankaj-sati. Если я буду использовать localStorage, когда пользователи будут очищать данные браузера на локальных устройствах, эти данные будут потеряны, это правильно?
Да, он будет удален
Pwa будет использовать хранилище браузера, поэтому любые данные будут удалены независимо от того, храните ли вы их в localStorage или IndexedDB.
аналогичная функциональность доступна через плагин Capacitor — конденсаторjs.com/docs/apis/storage