智能手机上的JavaScript内存和HTML5 LocalStorage限制

时间:2011-09-01 07:43:35

标签: javascript html5 mobile local-storage smartphone

我将开发网络应用程序,它应该适用于移动设备(智能手机)。在应用程序中,操作员将输入一些业务数据,操作员也将在封闭空间中键入此数据,此时网络信号不可用。

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

我找到了两种可能的解决方案:

  1. 将值存储在JavaScript内存中。浏览器崩溃或页面重新加载将无法生存。
  2. 将值存储在 HTML5 LocalStorage 中。需要具有HTML5支持的浏览器,并保证此存储将是持久的(关闭浏览器应用程序后不会刷新)。
  3. 因为我还没有开发智能手机的网络应用程序,而且我对它们没什么经验,所以我有一个问题:

    特定智能手机(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上的本地存储可以在没有浏览器限制的情况下增加,用户必须简单地接受要求更多空间。限制是设备的限制。

    以下是该应用的二维码:

    QR code

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

3 个答案:

答案 0 :(得分:6)

根据我的经验,对于上面提到的平台,您可以可靠地下注5MB。保持您的数据低于该级别,您应该非常安全。

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

在Android平台上,堆内存限制设置为12MB。不确定其他平台。既然你要在某种webcontainer(Webkit或其他)中运行,我不会太担心它。容器本身非常擅长管理内存和实现文件缓存,以最大限度地减少占用空间。

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

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

答案 1 :(得分:5)

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

  • Chrome 16.0.912
  • iPad2 IOS 5.0.1
  • iPhone 3GS

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

10400000字节= 9,918兆字节

答案 2 :(得分:0)

在使用Android 2.3.5的低端HTC Wildfire S上,您的页面停止在2,600,000。我印象非常深刻。

在Firefox 16.0.1桌面上,它停止在5,200,000,这与以下内容一致:配额定义为。