Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
FetchAPI: cuerpo de respuesta de canalización para transmitir mucho más lento que guardar en blob y escribir como un todo

Tengo un problema extraño. Recientemente cambié de XHR a buscar en un intento de implementar la transmisión de contenido descargado directamente en el sistema de archivos. Noté una ralentización considerable entre escribir una respuesta.blob para transmitir y canalizar la respuesta.cuerpo directamente a ella. Aquí hay una primera versión, que es rápida:

 exports.httpDownloadImpl = url => headers => body => writableStream => left => right => { return async function () { try { const response = await fetch(url, { method: 'POST', headers, body }); const blob = await response.blob(); await writableStream.write(blob); await writableStream.close(); return right({}); } catch(err) { return left(err.message); } } }

Esto se completa en unos pocos segundos para un archivo de 11 MB. La última versión tarda hasta 3 minutos en completarse:

 exports.httpDownloadImpl = url => headers => body => writableStream => left => right => { return async function () { try { const response = await fetch(url, { method: 'POST', headers, body }); await response.body.pipeTo(writableStream, { preventAbort: true, preventCancel: true, preventClose: true }); await writableStream.close(); return right({}); } catch(err) { return left(err.message); } } }

Sospecho que la última versión puede ser más lenta, ya que estamos interactuando con un sistema de archivos muchas veces en lugar de mantener la respuesta en la RAM, pero no tan lenta. ¿Tienes alguna idea de qué puede causar esto?

Editar: también noté en devtools que a veces funciona bien, canaliza el archivo hasta completarlo, a veces la solicitud se "cuelga" después de un segundo (es decir, el tamaño de la carga útil y el tiempo de respuesta no aumentan) a veces después de unos segundos ... Es bastante no determinista en realidad. Y cuando cierro Chrome mientras tanto, los registros del servidor muestran que el cliente cerró la conexión, por lo que la conexión está realmente abierta, solo se cuelga durante unos minutos y luego, de repente, informa que se completó.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda