Tengo una biblioteca JS que se encarga de realizar la descarga de imágenes JPEG para el cliente. Todo esto se hace de forma asíncrona. En algunos casos, el recuento de imágenes es realmente grande... Alrededor de 5000 imágenes. En este caso, el navegador Chrome emite el error "ERR_INSUFFICIENT_RESOURCES" para la solicitud ajax.
Cada solicitud debe hacerse individualmente, no hay opción para empaquetar las imágenes en el lado del servidor.
¿Cuáles son mis opciones aquí? ¿Cómo puedo encontrar una solución para este problema? La descarga funciona bien en Firefox...
Adjunto código de la descarga real:
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(); }El error significa que su código está sobrecargando su memoria (lo más probable es que se agotó la cuota de solicitudes pendientes ). En lugar de enviar todos los datos desde el backend, haga su solicitud de frontend para 5000 imágenes individuales y controle el flujo de solicitudes. independientemente, descargar 5000 imágenes es malo. Debe empaquetarlos para descargarlos. Si te refieres a buscar las imágenes, entonces cargar imágenes desde la interfaz a través de enlaces estáticos o dinámicos es mucho más lógico;)
Crear una clase:
Cree una matriz de objetos de esta clase utilizando la cantidad de ID de archivo que se deben descargar.
Almacene la matriz en un RequestManager que puede iniciar y administrar las descargas: