Html Chrome阻塞了太多XHR2请求

Html Chrome阻塞了太多XHR2请求,html,google-chrome,xmlhttprequest,blob,Html,Google Chrome,Xmlhttprequest,Blob,我有一个使用XHR2在紧循环中获取PNG(二进制blob)的“类似JSFIDLE”的演示。第一个演示捕获341个PNG图像,然后将它们保存在IndexedDB中(使用PockDB) 此演示效果良好: (要操作,首先按[Delete DB],重新加载页面,等待Status=Ready(您应该看到它计划获取341个磁贴),然后按[Download tiles]。) 下一个演示是相同的代码(相同的JS、CSS、HTML),但它尝试获取6163个PNG文件(同样来自GoogleDrive)。这次您将在控

我有一个使用XHR2在紧循环中获取PNG(二进制blob)的“类似JSFIDLE”的演示。第一个演示捕获341个PNG图像,然后将它们保存在IndexedDB中(使用PockDB)

此演示效果良好:

(要操作,首先按[Delete DB],重新加载页面,等待Status=Ready(您应该看到它计划获取341个磁贴),然后按[Download tiles]。)

下一个演示是相同的代码(相同的JS、CSS、HTML),但它尝试获取6163个PNG文件(同样来自GoogleDrive)。这次您将在控制台日志中看到许多XHR 0错误

它使用的算法如下所示:

  • 测试XHR2、IndexedDB和Chrome(没有二进制blob,但有Base64)是否存在。并显示此状态信息
  • 从GoogleDrive获取PNG图块的JSON清单(我有171个PNG图块,每个大小为256x256)。清单列出了它们的名称和大小
  • 将JSON清单存储在数据库中
  • MVVM和UI控件来自KendoUI(这次我没有使用它们出色的网格控件,因为我想探索CSS3网格样式)
  • 我正在使用PockDB的夜间构建
  • 所有PNG文件均来自谷歌硬盘(NASA蓝色大理石)
  • 我用它创建了瓷砖金字塔
我的猜测是,所有这些XHR2请求都是异步启动的,放在一个与JavaScript线程分离的线程上,然后当有太多未决请求时,Chrome就会生病

FireFox没有这个问题,IE10也没有

您可以分叉代码,并为第10行尝试不同的值:(要获取的最大分片数)


我已经向提交了一个bug,但是有没有人有过阻止异步XHR2抓取以将大量数据下载到Chrome浏览器的经验?

Chrome的人承认这是他们应该解决的问题:,但与此同时,我已经使用jquery defer/resolve实现了阻止,以保持0f线程数低

更新:我将删除我的代码笔,因为我不再需要显示此错误