12

根据http://arty.name/localstorage.html ,我想使用 localStorage 存储大量数据(如 800GB),而且我正在使用 Firefox,我更改了 localStorage 大小以及缓存大小。所以大小不是问题。但是,我编写了一些类似以下的 jquery:

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

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

很抱歉描述混乱,并在此先感谢!

4

2 回答 2

16

你不能!通常限制为 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/

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

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

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

此外,这些最初的大小受到浏览器的限制。可以要求用户被要求接受的更大报价。

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

于 2013-06-24T05:10:33.230 回答
12

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

LargeLocalStorage在 Chrome 上使用FilesystemAPI ,在 IE 和 Firefox 中使用IndexedDB ,在 Safari 中使用WebSQL

于 2013-10-25T20:27:34.970 回答