Panatilihin ang mga binary na tugon ng larawan sa isang Node.js proxy
I-stream ang mga binary na katawan sa pamamagitan ng Node forward proxy at itabi ang pag-decode ng teksto para sa sinadyang mga pagbabago sa teksto.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Gamitin ang landas ng katawang ito pagkatapos ng pagpili ng target, kahilingan sa upstream at paghahanda ng status at mga header sa downstream. Karaniwang nagbibigay ng Buffer ang mga stream ng Node; huwag ipunin ang mga ito sa isang string para sa mga larawan o iba pang hindi nagbabagong binary na nilalaman.
pipeline nag-uugnay ng backpressure at nagpapalaganap ng mga pagkabigo. Maaaring sirain nito ang destinasyon kapag may error, kaya huwag ipagpalagay na may isa pang tugon ng error sa HTTP na maipapadala pagkatapos. Ang bahaging ito ay hindi kumpletong proxy server.
Para sa mga byte na dumadaan, panatilihin ang kaugnay na metadata ng representasyon tulad ng uri ng media at encoding ng nilalaman, at pangasiwaan ang mga field na espesipiko sa hop sa pamamagitan ng mga tuntunin ng pagpapasa. Ang paghahambing ng mga byte ng gzip at tumutugmang mga header ng tugon ay nagpapakita ng pagpili sa pagitan ng naka-encode at na-decode na representasyon.
Ang sinadyang muling pagsulat ng HTML ay nangangailangan ng ibang landas: kilalanin ang uri ng media, pangasiwaan ang compression at character set, baguhin ang teksto at bumuo ng metadata para sa mga bagong byte. Hindi mailalarawan ng lumang Content-Length ang nabagong katawan.
Buffer.concat ay maaaring mapanatili ang binary na nilalaman kapag kailangan ang buong buffering, ngunit iniimbak ang buong katawan sa memorya. Ang dumadaang stream ng larawan ay hindi nangangailangan ng gastos na iyon.