localStorage存储大尺寸数据

时间:2013-06-22 22:11:21

标签: javascript jquery click local-storage

我想使用localStorage来存储大量数据(例如800GB),根据http://arty.name/localstorage.html我也使用Firefox,我更改了localStorage大小以及缓存大小。所以尺寸不是问题。但是,我写了一些jquery,如下所示:

 $("a[href]").each(function(){
    $(this).click(function(event){
       localStorage.test += "somenewinformation";
      ...

如果此localStorage.test已经有大量数据,如400GB,那么存储信息步骤将非常慢。当我点击一个链接时,jquery会等待我完成向localStorage.test附加的新信息,否则它将转到下一页,localStorage.test中的信息将全部丢失或localStorage.test将保持旧的值?我不明白的是,是否会生成一个新线程来执行此操作以在后台存储,而在中间关闭浏览器是否会影响它。

对于凌乱的描述感到抱歉,并提前致谢!

2 个答案:

答案 0 :(得分:11)

你不能!通常限制为5 mb。

某些浏览器(如Opera)允许您调整大小,但这完全取决于浏览器,并且是用户启动的操作,而不是可编程操作。

即使你可以,请记住localStorage只能存储字符串,所以其他任何东西都需要首先进行字符串化。与此相关的是一个键/值存储阵列,最终会遇到相当差的性能。

如果您需要大容量存储空间,请查看File API。这适用于大文件(Blob),您可以将任何内容存储为Blob。

800 Gb是一个很大的大小,文件API只能像文件系统一样快速运行(充其量,因为它是沙箱,更可能有点慢,即不是纯文件系统)。

有关文件系统API的更多信息(注意:自2014年4月起停止):
http://www.w3.org/TR/file-system-api/

教程:
http://www.html5rocks.com/en/tutorials/file/dndfiles/

斑点:
https://developer.mozilla.org/en-US/docs/Web/API/Blob

更新由于已停止使用Filesystem API,因此基本上只剩下两个选项(除了将数据存储到服务器之外):

  • 索引数据库API 又名Indexed DB(推荐)
  • Web SQL(已弃用但仍在Safari等浏览器中支持)

此外,这些最初的浏览器尺寸有限。可以请求更大的报价,要求用户接受。

在此处查看有关此API的更多详细信息:
http://www.w3.org/TR/IndexedDB/

答案 1 :(得分:6)

LargeLocalStorage提供了跨浏览器方式在本地存储大量数据。您可以存储二进制数据或字符串。

LargeLocalStorage使用Chrome上的FilesystemAPI,IE和Firefox中的IndexedDB以及Safari中的WebSQL