Tengo un servidor express nodejs que hace algunos cálculos y crea un archivo pdf y lo envía como respuesta. el problema es que, cuando el usuario intenta descargar el archivo, el navegador llama dos veces al punto final, por lo que los cálculos se realizan dos veces y tomará el doble de tiempo y tomará alrededor de 20 segundos para que se responda la solicitud. Revisé y vi que el punto final en sí se llama dos veces, no favicon.ico u otras cosas.
el archivo no se guarda en el servidor y se crea como búfer y luego se canaliza al cliente. y el punto final no es llamado por el código frontend ni obtenido por algo, simplemente se abre en una nueva pestaña en el navegador. algunos de los códigos se enumeran a continuación:
let buffer = await createPdfBuffer() // a custom function that creates the pdf as buffer const readStream = new stream.PassThrough(); readStream.end(buffer); res.set('Content-disposition', 'attachment; filename=' + file.pdf); res.set('Content-Type', 'application/pdf'); readStream.pipe(res);