【问题标题】:JavaScript memory and HTML5 LocalStorage limitations on smartphones智能手机上的 JavaScript 内存和 HTML5 LocalStorage 限制
【发布时间】:2011-11-08 04:51:53
【问题描述】:

我将开发应该在移动设备(智能手机)上运行的网络应用程序。在应用程序中操作员会输入一些业务数据,操作员也会在封闭的空间输入这些数据,在这些空间中,网络信号不可用。

因此,需要离线模式。在这种模式下,操作者可以输入数据,这些数据将存储在浏览器端,待网络可用后,将数据发送到服务器并持久化到数据库中。

我发现了 2 个可能的解决方案:

  1. 将值存储在 JavaScript 内存中。无法在浏览器崩溃或页面重新加载后继续存在。
  2. 将值存储在 HTML5 LocalStorage 中。需要支持 HTML5 的浏览器并保证此存储将是持久的(关闭浏览器应用后不会刷新)。

因为我还没有为智能手机开发过网络应用程序,而且我对它们的经验很少,所以我有一个问题:

特定智能手机(Android、Windows Mobile、Windows Phone、iPhone)上特定浏览器的 JavaScript 内存和 HTML5 LocalStorage 限制是什么?

我知道理论上 HTML5 LocalStorage 应该是 5MB,而 JavaScript 内存应该依赖于设备资源,至少应该是 5MB,但是对于智能手机来说呢? F.g.我注意到在 Windows Phone 6.5 上,jStorage 页面使用 userData 用于旧版 IE,并没有在此设备上保留数据(可能在每次页面刷新后刷新,资源有限)。

更新answer to the question of max size of local storage values 中有一个测试本地存储限制的简单应用程序的很好的链接,根据我所做的测试,Opera Mobile 11 可以在不受浏览器限制的情况下增加本地存储,用户必须简单地接受请求更多空间。限制是设备的限制。

这是应用程序的二维码:

以及应用程序本身: http://arty.name/localstorage.html

【问题讨论】:

  • 我 (Android) HTC 的愿望有一个 最大 6MB 的缓存大小;使用 HTML5 存储在所有网站之间共享。当 6MB 被填满时,手机顶部会显示一个非常烦人的磁盘空间图标,直到空间被清除。

标签: javascript html mobile local-storage smartphone


【解决方案1】:

根据我的经验,对于上述平台,您可以可靠地押注至少 5MB。将您的数据保持在该级别以下,您应该非常安全。

阅读这篇文章。 http://diveintohtml5.info/storage.html 它有一些不错的信息,但并不完全准确,尤其是说你不能达到极限的部分。
我知道一个事实,在 iPhone 上,一旦达到限制,手机会询问用户是否要允许更多空间。 (有点准确,但不完全)

在 Android 平台上,堆内存限制设置为 12MB。不确定其他平台。由于您将在某种网络容器(Webkit 或其他)中运行,因此我不会太担心它。容器本身非常擅长管理内存和实现文件缓存以最小化它们的占用空间。

我建议您将内存优化等留到最后。谁知道,你甚至可能不需要它。不要过早优化。

PS:
看Phonegap:http://phonegap.com/

【讨论】:

    【解决方案2】:

    刚刚测试了你的链接:check localstorage

    • Chrome 16.0.912
    • iPad2 IOS 5.0.1
    • iPhone 3GS

    直到 2.600.000 个字符。由于 UTF-8 有 4 个字节,只需将其乘以 4 即可得到总字节数。

    10400000 字节 = 9,918 兆字节

    【讨论】:

    • utf8 字符不是 4 个字节长,而是具有可变宽度。大小可以在 1(与 ascii 相同的字符以实现向后兼容性)和 4 字节之间变化。
    • JS 字符在大多数浏览器中实际上存储为 UCS-2,因此对于大多数字符集占用 2 个字节,对于某些象形文字占用 4 个或更多字节。
    【解决方案3】:

    在我使用 Android 2.3.5 的低端 HTC Wildfire S 上,您的页面停止在 2,600,000。我印象深刻,它有这么高。

    在 Firefox 16.0.1 桌面上,它停止在 5,200,000,这与 about:config quota is defined at 一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多