超过localStorage配额(localStorage size!=文件下载大小)以及如何检查localStorage大小

amp*_*and 2 javascript caching local-storage

我想不出一个好头衔,所以希望能做到.

我正在做的是创建一个离线HTML5 webapp."出于某些原因"我不希望将某些文件放在缓存清单中,而是希望将内容放在localStorage中.

所有测试均在Google Chrome for Mac/Mac OS 10.6.6中完成

我有4个.JSON文件,3,120,792大小完全是字节大小.首次访问(在线)应用程序时,我将这个JSON内容下拉并将其放在一个字符串变量中,比方说str.之前存储的JSON字符串,我所有的剥离\n\t,和更换\"',最大限度地减少字符串的长度.

以下是字符串长度(Chrome控制台中的str.length):

original str : 3,117,764 (this is a concatenation of the contents of the 4 JSON files)
reformatted JSON: 2,732,249 (not too shabby - should save me a few bytes)
Run Code Online (Sandbox Code Playgroud)

但是,现在当我尝试将此字符串存储在localStorage中时,我收到的错误是我已超出缓存大小(Error: QUOTA_EXCEEDED_ERR: DOM Exception 22).但是此页面没有其他缓存(我已手动删除了所有Google Chrome缓存文件).

为什么会这样?

存储在缓存中时字符串的大小是多少?

如何最大限度地减小此大小以充分利用localStorage?

编辑添加:我已尝试将字符串的1,000,000个字符保存到localStorage(localStorage.setItem('x',str.substr(1,1000000))中.当我在Chrome的缓存文件夹中检查localStorage文件大小时,它是2MB.这是一个sqlite数据库.看起来浏览器使用的是实际的localStorage数据库大小,而不是存储在其中的数据大小.这当然很糟糕,但可能是标准行为.我想你可以在localStorage中存储的最长的字符串是大约2,500,000个字符?

小智 7

知道在本地存储中可以存储多少个字符的好方法是通过以下链接对其进行测试:http://arty.name/localstorage.html .

大小取决于浏览器HTML5实现

我的上一次测试:Chrome 13/Safari 5/IPAD 2:2.600.000 chr FIREFOX 4:5.200.000 OPERA 11:无限制


Bru*_*dge 5

http://jsfiddle.net/brucealdridge/j6KdJ/ 2,500,000 个字符适用于我的 ("5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.9.Safari/129.0 534.30") 3,000,000 不是。我在想这可能是我的编码问题,但我刚刚检查过,它不是