本地存储:它在移动设备上的表现如何?使用安全吗?有哪些陷阱?需要使用过它的开发者的建议

Local Storage: How does it behave on mobile devices? Is it safe to use? What are the pitfalls? Need advice from devs who have used it

我有一个 Angular11 + Firebase 应用程序,我需要在应用程序的表单部分实现缓存功能。它是一个动态的,根据用例可以包含许多字段。

我的目标是将用户输入保存在 LocalStorage 上,这样如果发生错误(网络问题、重新加载页面等...),此存储的数据将用于补充 UI。

到目前为止,如果重新加载页面,所有输入数据都会丢失,这对用户来说非常令人沮丧,所以...我的问题是:我可以信任 LocalStorage API 跨 Anroid/iOS 设备?

我知道本地存储 API 在桌面浏览器上运行良好,但我听说在移动设备上使用它时会遇到一些问题。问题是我的用户很少在桌面上访问该应用程序,所以我需要一个可以在移动设备上运行的解决方案,但令人惊讶的是我在网上找不到任何关于它的决定性信息所以...

任何人都可以分享一些关于这个问题的 knowledge/links/tips/personal 经验吗?

我没有时间想出一个解决方案,所以任何信息将不胜感激。

很难根据您提供的详细信息判断 localStorage 是否适合您的用例,但通常您可以使用它在会话之间存储数据。如果您只需要为单个会话缓存数据(直到页面关闭),您可以使用 sessionStorage.

关于兼容性,也取决于您需要支持的移动设备的具体版本和浏览器。只要您的目标浏览器支持,与桌面浏览器应该没有任何重大差异。

您可以在 Can I Use and use the pattern described here 中检查兼容性以检查 localStorage 是否可用:

var storage;
var fail;
var uid;
try {
    uid = new Date;
    (storage = window.localStorage).setItem(uid, uid);
    fail = storage.getItem(uid) != uid;
    storage.removeItem(uid);
    fail && (storage = false);
} catch (exception) {}

if (storage) {
    // Use `storage` e.g.
    storage.setItem('foo', 'bar');
}