iPad Safari上的localStorage是否保证是持久的?

15
我在网络上看到关于这个问题的不同意见。有人说从iOS 5.1开始,iPad上HTML5内容的本地数据存储不再保证持久性,但在苹果当前Safari开发者页面(https://developer.apple.com/technologies/safari/html5.html),离线持久性被建议保证。
有人最近有过这方面的经验,并能够评论HTML5数据库功能在iPad上使用Safari时的可靠性吗?
2个回答

15

这可能已经足够的信息:

localStorage 的 w3c 规范如下:

第二个存储机制(注意:localStorage)旨在用于跨多个窗口的存储,并且持续超过当前会话。特别地,Web 应用程序可能希望存储用户数据,例如整个用户创作的文档或用户的邮箱等大量数据,以提高性能。

而在 Apple 页面上:

Safari 支持最新的 HTML5 离线数据存储功能。您的应用可以使用基于简单键/值的数据存储或强大的 SQL 数据库将其信息存储在本地计算机上。数据存储在本地,并在 Safari 启动时持久存在,因此您的应用不需要网络连接即可访问数据,提高了启动时间和整体性能。

通过搜索 Google(由于一些反谷歌怪人还有 Yahoo!),我得到了以下结果:

在 iOS 5.1 中,苹果公司将 localStorage 文件的位置移动到缓存文件夹中(该位置会偶尔进行清理),应操作系统的要求执行此操作,通常在空间不足时。苹果可能这样做是为了防止 localStorage 被备份到 iCloud。

iOS-6 Safari 中无法访问 localStorage

我无法在iOS-6 的 Safari(iPad)中访问 localStorage。 例如,以下代码在 Windows 上所有浏览器和(iOS-5 上)都可以正常运行,但在 iOS-6 上无法工作: localStorage.setItem("var","5"); alert(localStorage.getItem("var"));

答案:

我通过关闭iPad上的隐私浏览来解决了问题。我从以下参考资料中找到了解决方法:https://github.com/cloudhead/less.js/issues/312#issuecomment-2994845


1
苹果现在会在 Webkit 浏览器中删除 localStorage 数据,如果连续 7 天没有使用。详情请见 https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more/。 - Andy Ford

5

是的,当设备存储空间不足时,苹果会清理本地存储。 (我实际测试过并确认了这一点)。


我正在观察行为,发现在iOS设备(iOS 12.4)上Safari本地存储随机清除,即使没有缓存压力(即存储利用率<50%),也没有使用私密浏览。 - jonseymour
@jonseymour,你解决这个问题了吗?在最新的iOS上,似乎新款iPhone仍然存在这个问题。 - Sherwin Flight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接