javascript - localStorage 存储大尺寸数据

标签 javascript jquery click local-storage

根据 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 将保持旧状态值(value)?我不明白的是是否会生成一个新线程来在后台进行此存储,并且在中间关闭浏览器是否会影响它。

对于困惑的描述,我们深表歉意,在此先感谢您!

最佳答案

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

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

即使您还记得 localStorage 只能存储字符串,所以其他任何内容都需要先进行字符串化。再加上这是一个键值存储阵列,您最终会遇到非常糟糕的性能。

如果您需要大存储容量,请改用 File API。这是为处理大文件 (Blob) 而设计的,您可以将任何内容存储为 Blob。

800 Gb 是一个大容量,File API 只能与文件系统一样快(充其量,更可能慢一点,因为它是沙盒,即不是纯文件系统)。

有关文件系统 API 的更多信息(注意:自 4/2014 起停止):
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

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

  • Indexed Database API 又名 Indexed DB(推荐)
  • Web SQL(已弃用但仍受 Safari 等浏览器支持)

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

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

关于javascript - localStorage 存储大尺寸数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255786/

相关文章:

javascript - 正则表达式 - 仅获取文本/数字和额外内容

javascript - jQuery 可拖动和透明 PNG - 可拖动区域被透明背景遮挡

javascript - 使用 ANGULARJS 表单验证而不是 jquery 表单验证插件有什么好处?

Jquery all 选择器 - 在单击的 div 上仅触发一次

javascript - Android API 23. WebView如何忽略javascript错误

javascript - 如何在 Node.js 和 TestCafe 不等待检查选择器是否不存在的情况下编写 if 条件

javascript - 如何检测 Canvas 的中心线以在拖动对象时使其居中?

javascript - 带有下划线滑动链接的滚动页面菜单处于事件状态

python - 单击链接,然后使用 python mechanize 更改 ip

C#/J# 按名称查找函数/手动控制点击