Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!