与脱机缓存和放大器结合使用时的HTML5 LocalStorage限制智能手机上的JS内存

时间:2011-11-16 15:01:45

标签: javascript html5 mobile local-storage offline

我问过关于JavaScript memory and HTML5 LocalStorage limitations on smartphones的问题,但问题变得更具体了。

我需要为离线使用存储更多数据,其中很大一部分是字典。我有一个想法,用JavaScript存储字典(它只是将数组数据加载到JS变量中),这些字典将被缓存以供离线使用。离线业务数据将存储在LocalStorage中。此外,JS内存将保留一些缓存用于在线使用,以防止从服务器多次加载同一实体。

所以我有疑问,如果使用大型离线缓存(比如说4MB)并且在内存中存储很多会影响LocalStorage的可用存储空间吗?假设由于大量离线缓存使用,它可能会限制为3MB。有人有这种应用程序的经验,不得不处理移动设备上特定浏览器的问题吗?

类似于我的问题Application Cache Manifest + Local Storage Size Limit的答案并没有提供我需要的信息,因为我理解作者已经分别测试了离线缓存限制和LocalStorage限制。

我更担心JS内存应用程序,我担心浏览器可以在没有警告的情况下关闭。在一台设备上进行测试并不意味着应用程序不会在另一台设备上崩溃。

所以请写一下,如果您已经测试了移动浏览器的限制。帖子只提供线索在哪里进一步搜索或描述尚未完成努力的测试场景也将受到赞赏。这个话题很新,所以我知道大多数研究都只是草稿。

更新 我已经更新了我提到的有关LocalStorage限制的问题,并在Opera Mobile 11上进行了测试,其中我能够存储超过5MB的限制。

另外根据帖子Increase iPad cache over 50 MB?至少在iPad上可以存储50MB的数据,希望我能尽快在iPhone上进行测试。

2 个答案:

答案 0 :(得分:2)

在几乎所有情况下,移动设备对域的所有存储都有5meg的硬限制。这包括所有本地/会话存储,索引数据库,websql,应用程序缓存或其他任何内容。

在这种情况下存储数据的最佳方法是使用本地存储或WebSQL作为字典数据,但不是存储所有数据,而是存储80%的用例内容,并提供一种简单的方法来实现根据需要加载附加信息。

HTH, PETE

答案 1 :(得分:0)

经过实验,我发现Opera不限制资源。它要求增加LocalStorage限制,并且此限制不受在应用程序缓存中存储文件的影响。

Firefox具有可配置的LocalStorage限制,因此理论上可以在那里存储大量数据,也不受应用程序缓存的影响。但是,移动Firefox的桌面兄弟编写得非常糟糕,它管理资源的效率非常低,以至于当存储处于密集使用状态时,它会被Android杀死。所以我不鼓励人们使用Firefox,至少在Android设备上使用。

另一方面,Android浏览器似乎有2.5 MB的限制,不受应用程序缓存的影响,但它应该更低,因为怀疑你至少有5MB的使用。但是,这个浏览器也无法提供准确的GPS位置(也就是说,AFAIK,功能不是bug - 安全原因),所以对我来说这个浏览器是没有选择支持的。