Ohranite binarne odgovore slik v proxyju Node.js
Pretakajte binarna telesa skozi posredniški proxy Node in dekodiranje besedila namenite le zavestnim besedilnim preoblikovanjem.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
To pot telesa uporabite po izbiri cilja, zahtevi proti izvoru ter pripravi stanja in glav proti odjemalcu. Tokovi Node običajno prinašajo Buffer; ne zbirajte jih v niz za slike ali drugo nespremenjeno binarno vsebino.
pipeline usklajuje povratni tlak in širi napake. Ob napaki lahko uniči cilj, zato ne domnevajte, da je po tem mogoče poslati še en odgovor z napako HTTP. Ta del ni popoln proxy strežnik.
Za bajte, ki gredo skozi, ohranite ustrezne metapodatke predstavitve, kot sta vrsta medija in kodiranje vsebine, polja, značilna za posamezni skok, pa obdelajte s pravili posredovanja. Primerjava bajtov gzip in ustreznih glav odgovora pokaže izbiro med kodirano in dekodirano predstavitvijo.
Zavestno prepisovanje HTML zahteva drugo pot: prepoznajte vrsto medija, obdelajte stiskanje in nabor znakov, preoblikujte besedilo in ustvarite metapodatke za nove bajte. Stari Content-Length ne more opisati spremenjenega telesa.
Buffer.concat lahko ohrani binarno vsebino, ko je potrebno popolno medpomnjenje, vendar shrani celotno telo v pomnilniku. Skoznji tok slike te cene ne potrebuje.