Chrome ERR_INSUFFICIENT_RESOURCES 解决方法

Jac*_*cob 7 javascript ajax asynchronous vue.js

我有一个 JS 库,负责为客户端下载 JPEG 图像。所有这些都是异步完成的。在某些情况下,图像数量非常大......大约 5000 张图像。在这种情况下,Chrome 浏览器会针对 ajax 请求发出“ERR_INSUFFICIENT_RESOURCES”错误。

每个请求必须单独完成,没有选项可以在服务器端打包图像。

我在这里有什么选择?我怎样才能找到解决这个问题的方法?下载在 Firefox 中运行良好...

附上实际下载的代码:

function loadFileAndDecrypt(fileId, key, type, length, callback, obj) {     

 var step = 100 / length;

 eventBus.$emit('updateProgressText', "downloadingFiles");


  var req = new dh.crypto.HttpRequest();
    req.setAesKey(key);
    let dataUrl;
    
    if (type == "study")  {
         dataUrl = "/v1/images/";
    }else {
         dataUrl = "/v1/dicoms/";
    }    

    var url = axios.defaults.baseURL + dataUrl + fileId;
    req.open("GET", url, true);
    req.setRequestHeader("Authorization", authHeader().Authorization+"")
    req.setRequestHeader("Accept", "application/octet-stream, application/json, text/plain, */*");
    req.responseType = "arraybuffer";

    req.onload = function() {
        console.log(downloadStep);    
        downloadStep +=  step;
        eventBus.$emit('updatePb', Math.ceil(downloadStep));

        var data = req.response;
        obj.push(data);
        counter ++;        
        //last one
        if (counter == length) {        
            callback(obj);        
        }
    };

    req.send();
}
Run Code Online (Sandbox Code Playgroud)

小智 6

该错误意味着您的代码正在超载内存(很可能是,或者待处理请求的配额已耗尽)。不要从后端发送所有数据,而是让前端请求 5000 张单独的图像并控制请求流。不管怎样,下载 5000 张图像是不好的。您应该将它们打包以供下载。如果您的意思是获取图像,那么通过静态或动态链接从前端加载图像更符合逻辑;)