移动web浏览器和移动web应用程序共享相同的localStorage吗?

Do mobile web browsers and mobile web apps share the same localStorage

本文关键字:移动 web localStorage 共享 浏览器 应用程序      更新时间:2023-09-26

我正在做一个移动设备的网站。该网站可以通过普通的网络浏览器访问,也可以通过一个应用程序访问,这个应用程序只是一个浏览器外壳,可以打开移动网站。为了加快移动端网站的加载速度,我们减少了请求,使用了数据uri等。最近我们开始使用localStorage来保存样式和JavaScript数据到设备。

你可能会问为什么?在我们的测试中,移动浏览器在整个会话期间以及在浏览器关闭和重新打开时都保持着它们的缓存。当应用程序被使用时,它会保持它的缓存,但是当它被关闭和重新打开时,它会重新请求所有内容,从而减慢初始加载速度。

问题是,我们有样式和JavaScript是特定的,如果你是在浏览器或在应用程序中的一些小事情。我们已经看到一些事情打破了这些微妙的差异,我最好的理论是,localStorage是在浏览器和应用程序之间共享的。如果一个用户同时使用网站和应用程序,如果localStorage是由一个设置的,而另一个需要其他东西,则可能会出现问题。

我找不到任何证实这一理论的文档,并且没有创建一个应用程序来测试这一点,我想我会问是否有人有任何想法?

如果你信任苹果…

和cookie一样,存储对象也是web共享的资源从同一域提供的内容。来自同一域的所有页面共享同一个本地存储对象。的帧和内联帧来自相同来源的内容也共享相同的会话存储对象,因为它们来自同一个窗口。

由于存储资源是共享的,脚本在多个运行页上下文可能会修改存储在存储器中的数据被脚本积极地检查或修改的对象在不同的页面上运行。如果您的脚本没有注意到这些改变,你可能得不到你期望的结果。

如果你正在填充你的应用程序与web应用程序的数据来自相同的地方,我怀疑有一些键被修改的另一个。我知道使用sessionStorage.clear()将擦除键,如果web应用程序和脱机应用程序从同一域加载数据。

正如Chiguireitor所说,这取决于用户使用的是哪种手机操作系统,但就我的经验而言,iOS 4 & &;5 .共享相同的localStorage,无论你是通过Safari浏览器访问移动应用程序还是作为主屏幕web应用程序。当然,如果你将它与Phonegap之类的东西打包,它就会作为自己的应用程序,因此它的localStorage不会被共享。