Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

97
Visualizações
¿Hay alguna forma de limitar la cantidad máxima de procesos paralelos que cargan fragmentos en dropzone.js?

Necesitamos ser capaces de soportar cargas grandes a nuestro sitio. Es por eso que implementamos la carga fragmentada con Dropzone.js.

Funciona muy bien, pero cuando uso un archivo muy grande, puedo ver en la vista de depuración de la red de Chrome que todas las solicitudes se inician inmediatamente en un estado pendiente y el navegador no puede mantenerse al día. Después de un tiempo, hay demasiadas solicitudes abiertas y Chrome comienza a mostrar "net::ERR_INSUFFICIENT_RESOURCES" para algunas de las solicitudes pendientes.

Estas son las opciones relevantes de nuestra configuración de Dropzone:

 [...] parallelUploads: 1, // only one file is uploaded at a time maxFilesize: 8148, // max individual file size 8 GB chunking: true, // enable chunking forceChunking: true, // forces chunking when file.size < chunkSize parallelChunkUploads: true, // allows chunks to be uploaded in parallel chunkSize: 2*1024*1024, // chunk size 2MB retryChunks: true, // retry chunks on failure retryChunksLimit: 3 [...]

Este es uno de los cientos de errores de recursos insuficientes de la consola de Chrome al cargar archivos grandes:

 dropzone.js:9622 POST http://localhost:44802/AuthenticatedFolder/65fc862e-4cb1-41b0-a39c-f6a41ea5e64d/DoChunkedUpload/A8BB25EA676977DC6F064AEEE636E388FCF5E513 net::ERR_INSUFFICIENT_RESOURCES submitRequest @ dropzone.js:9622 _uploadData @ dropzone.js:9406 handleNextChunk @ dropzone.js:9218 (anonymous) @ dropzone.js:9248 (anonymous) @ dropzone.js:9423 transformFile @ dropzone.js:7545 _loop @ dropzone.js:9419 _transformFiles @ dropzone.js:9429 uploadFiles @ dropzone.js:9171 processFiles @ dropzone.js:9078 processFile @ dropzone.js:9051 processQueue @ dropzone.js:9042 (anonymous) @ dropzone.js:8743 setTimeout (async) enqueueFile @ dropzone.js:8742 (anonymous) @ dropzone.js:8705 accept @ dropzone.js:7407 accept @ dropzone.js:8669 addFile @ dropzone.js:8695 (anonymous) @ dropzone.js:8571 _addFilesFromItems @ dropzone.js:8595 drop @ dropzone.js:8510 drop @ dropzone.js:8225

Estoy usando la última versión 5 de dropzone (5.9.3).

¿Hay alguna forma de limitar el número de solicitudes en ejecución paralelas? Si no, sería una gran adición a las opciones. Como solución temporal, deshabilité las cargas paralelas de Chunk. Funciona, pero por supuesto también ralentiza la carga.

¡Gracias por cualquier ayuda!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tenemos exactamente el mismo problema en una aplicación en el trabajo. Hay una solicitud de fusión aquí https://gitlab.com/meno/dropzone/-/merge_requests/53 que proporciona una solución. He preguntado sobre el estado, pero la solicitud de fusión ya es bastante antigua. Sin embargo, la solución parece implementarse con bastante facilidad y nuestro plan actual es copiar el código fuente de Dropzone y hacerlo nosotros mismos. Obviamente, esto no es lo ideal, ya que confiaríamos en una copia local de cualquier versión que copiemos, pero podría valer la pena hasta que Dropzone decida resolverlo por sí mismo. Te mantendré informado

about 4 years ago · Juan Pablo Isaza Relatório

0

Una solución que funcionó para mi caso es:

 // Wrapper for upload process to prevent "Not enough resource error" const oldFunction = fileUploader.submitRequest; let inProgress = 0; fileUploader.submitRequest = function(xhr, formData, files){ runQueue(oldFunction,this,xhr, formData, files) } function runQueue(uploadDataFunction,scope,xhr, formData, files){ if(inProgress <= 50){ inProgress++; xhr.onreadystatechange = function () { if (xhr.readyState === 4) { inProgress--; } } uploadDataFunction.call(scope,xhr, formData, files); }else{ setTimeout(function(){runQueue(uploadDataFunction,scope,xhr, formData, files)},100); } }

Anulo la función que es responsable de procesar las solicitudes individuales. Ponga en cola 50 procesos en paralelo (que yo sepa, Chrome procesa un máximo de 2 procesos en paralelo) para que haya un búfer y todos los demás procesos se vuelvan a verificar después de un tiempo de espera y, si hay menos de 50 procesos en cola, se agregan.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda