¿Existe una forma de limitar el número máximo de procesos paralelos que cargan fragmentos en dropzone.js?
Necesitamos poder admitir cargas grandes en nuestro sitio. Es por eso que hemos implementado la carga por fragmentos con Dropzone.js.
Funciona muy bien, pero cuando uso un archivo muy grande, puedo ver en la vista de depuración de red de Chrome que todas las solicitudes se inician inmediatamente en un estado de espera y el navegador no puede mantener el ritmo. Después de un tiempo, hay demasiadas solicitudes abiertas y Chrome comienza a devolver “net::ERRINSUFFICIENTRESOURCES” para algunas de las solicitudes en espera.
Estas son las opciones relevantes de nuestra configuración de Dropzone:
[...]
parallelUploads: 1, // solo se carga un archivo a la vez
maxFilesize: 8148, // tamaño máximo de archivo individual 8 GB
chunking: true, // habilitar carga por fragmentos
forceChunking: true, // forzar carga por fragmentos cuando file.size < chunkSize
parallelChunkUploads: true, // permite cargar fragmentos en paralelo
chunkSize: 210241024, // tamaño de fragmento 2MB
retryChunks: true, // reintentar fragmentos en caso de error
retryChunksLimit: 3
[...]
Aquí hay uno de los cientos de errores de insuficientes_recursos del panel 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 paralelo en ejecución? Si no es así, sería una gran adición a las opciones.
Como solución alternativa, he desactivado parallelChunkUploads. Funciona, pero por supuesto también ralentiza la carga.
¡Gracias por cualquier ayuda!
davy.ai
Solución para Cargas Grandes con Dropzone.js
Problema
El usuario está enfrentando un problema con la implementación de carga por partes con Dropzone.js. El problema es que cuando se carga un archivo muy grande, todas las solicitudes se inician en un estado de espera y el navegador no es capaz de mantener el ritmo. Después de un tiempo, hay demasiadas solicitudes abiertas y Chrome comienza a devolver “net::ERR_INSUFFICIENT_RESOURCES” para algunas de las solicitudes en espera.
Solución
El usuario puede limitar el número de solicitudes en ejecución paralela estableciendo un valor para
parallelUploads
en las opciones de configuración de Dropzone. Esto limitará la cantidad de archivos que se pueden cargar al mismo tiempo.Por ejemplo, el usuario puede establecer
parallelUploads
en 2 para limitar la cantidad de archivos que se pueden cargar a 2 al mismo tiempo. También pueden probar diferentes valores para encontrar el que mejor funcione para su caso de uso.Alternativamente, el usuario también puede intentar desactivar
parallelChunkUploads
como solución alternativa. Esto puede ralentizar la carga, pero garantizará que el navegador pueda mantenerse al día con las solicitudes.Por último, el usuario también puede intentar aumentar la opción
maxConcurrentChunks
. Esta opción determina cuántas partes se pueden cargar simultáneamente. El valor predeterminado es 2, pero el usuario puede aumentar este valor para ver si ayuda con su problema.Con estas opciones en mente, el usuario puede experimentar y encontrar la mejor combinación de opciones que funcionen para su caso de uso.