【问题标题】:Do mobile web browsers and mobile web apps share the same localStorage移动 Web 浏览器和移动 Web 应用程序是否共享同一个 localStorage
【发布时间】:2011-10-06 23:12:07
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你应该说明你指的是什么移动操作系统,因为不同的操作系统可能会表现出不同的行为

标签: javascript css mobile local-storage web


【解决方案1】:

如果你信任Apple...

与 cookie 一样,存储对象是网络通用的共享资源 来自同一域的内容。 来自同一域的所有页面 共享同一个本地存储对象。框架和内联框架,其 内容来自同一个来源也共享相同的会话存储 对象,因为它们来自同一个窗口。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多