移动Web浏览器和移动Web应用程序是否共享相同的localStorage

时间:2011-10-06 23:12:07

标签: javascript css mobile local-storage web

我正在开发移动设备网站。该网站可以通过普通的网络浏览器,也可以通过一个只是一个浏览器外壳的应用程序来启动移动网站。在我们加快移动网站加载的努力中,我们减少了请求,使用了数据uris等。最近我们开始使用localStorage将样式和JavaScript数据保存到设备中。

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

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

我找不到任何证明这个理论的文件,而且没有创建一个应用程序只是为了测试这个我想我会问是否有人有任何想法?

2 个答案:

答案 0 :(得分:1)

如果您信任Apple ...

  

与Cookie一样,存储对象是Web共有的共享资源   从同一个域提供的内容。 来自同一域的所有网页   共享相同的本地存储对象。框架和内联框架   内容来自同一个来源也共享相同的会话存储   对象,因为它们从同一窗口下降。

     

因为存储资源是共享的,所以脚本运行多个   页面上下文可能会修改存储在存储中的数据   正在被脚本严格审查或修改的对象   在不同的页面上运行。如果您的脚本没有注意到这些   更改,您可能无法获得预期的结果。

如果您使用与Web应用程序相同位置的数据填充您的应用程序,我会怀疑有一些键被另一个键修改。我知道如果网络应用和离线应用加载来自同一域的数据,使用sessionStorage.clear()将清除密钥。

答案 1 :(得分:0)

正如Chiguireitor所说,这取决于用户使用的移动操作系统,但根据我的经验,iOS 4& 5无论您是通过Safari浏览器访问移动应用程序还是作为主屏幕Web应用程序,都可以共享相同的localStorage。当然,如果你用Phonegap之类的东西打包它,它就会充当自己的应用程序,因此它的localStorage不会被共享。