Node.js ପ୍ରକ୍ସିରେ ବାଇନାରୀ ପ୍ରତିଛବି ପ୍ରତିକ୍ରିୟା ସଂରକ୍ଷଣ କରନ୍ତୁ
Node ଫରୱାର୍ଡ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ବାଇନାରୀ ବଡି ପ୍ରବାହିତ କରନ୍ତୁ ଏବଂ ପାଠ୍ୟ ଡିକୋଡିଂ କେବଳ ଉଦ୍ଦେଶ୍ୟପୂର୍ଣ୍ଣ ପାଠ୍ୟ ରୂପାନ୍ତର ପାଇଁ ରଖନ୍ତୁ।
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
ଲକ୍ଷ୍ୟ ଚୟନ, ଅପଷ୍ଟ୍ରିମ ଅନୁରୋଧ ଏବଂ ଡାଉନଷ୍ଟ୍ରିମ ସ୍ଥିତି ଓ ହେଡର ପ୍ରସ୍ତୁତି ପରେ ଏହି ବଡି ପଥ ବ୍ୟବହାର କରନ୍ତୁ। Node ଷ୍ଟ୍ରିମ ସାଧାରଣତଃ Buffer ଦିଏ; ପ୍ରତିଛବି କିମ୍ବା ଅନ୍ୟ ଅପରିବର୍ତ୍ତିତ ବାଇନାରୀ ବିଷୟବସ୍ତୁ ପାଇଁ ସେଗୁଡ଼ିକୁ ଷ୍ଟ୍ରିଙ୍ଗରେ ସଂଗ୍ରହ କରନ୍ତୁ ନାହିଁ।
pipeline ବ୍ୟାକପ୍ରେସର ସମନ୍ୱୟ କରେ ଏବଂ ବିଫଳତା ବିସ୍ତାର କରେ। ତ୍ରୁଟି ସମୟରେ ଏହା ଗନ୍ତବ୍ୟକୁ ନଷ୍ଟ କରିପାରେ, ତେଣୁ ଏହା ପରେ ଆଉ ଏକ HTTP ତ୍ରୁଟି ପ୍ରତିକ୍ରିୟା ପଠାଯାଇପାରିବ ବୋଲି ଭାବନ୍ତୁ ନାହିଁ। ଏହି ଅଂଶ ସମ୍ପୂର୍ଣ୍ଣ ପ୍ରକ୍ସି ସର୍ଭର ନୁହେଁ।
ପାସ ହେଉଥିବା ବାଇଟ ପାଇଁ, ମିଡିଆ ପ୍ରକାର ଏବଂ ବିଷୟବସ୍ତୁ ଏନକୋଡିଂ ପରି ପ୍ରାସଙ୍ଗିକ ପ୍ରତିନିଧିତ୍ୱ ମେଟାଡାଟା ସଂରକ୍ଷଣ କରନ୍ତୁ, ଏବଂ ହପ-ନିର୍ଦ୍ଦିଷ୍ଟ କ୍ଷେତ୍ରକୁ ଫରୱାର୍ଡିଂ ନିୟମ ମାଧ୍ୟମରେ ପରିଚାଳନା କରନ୍ତୁ। gzip ବାଇଟ ଏବଂ ମେଳ ଖାଉଥିବା ପ୍ରତିକ୍ରିୟା ହେଡରର ତୁଳନା ଏନକୋଡେଡ ବନାମ ଡିକୋଡେଡ ପ୍ରତିନିଧିତ୍ୱର ଚୟନ ଦେଖାଏ।
ଉଦ୍ଦେଶ୍ୟପୂର୍ଣ୍ଣ HTML ପୁନଃଲେଖନ ପାଇଁ ଅନ୍ୟ ପଥ ଦରକାର: ଏହାର ମିଡିଆ ପ୍ରକାର ଚିହ୍ନଟ କରନ୍ତୁ, ସଂକୋଚନ ଓ ଅକ୍ଷର ସେଟ ପରିଚାଳନା କରନ୍ତୁ, ପାଠ୍ୟ ରୂପାନ୍ତର କରନ୍ତୁ ଏବଂ ନୂଆ ବାଇଟ ପାଇଁ ମେଟାଡାଟା ସୃଷ୍ଟି କରନ୍ତୁ। ପୁରୁଣା Content-Length ପରିବର୍ତ୍ତିତ ବଡି ବର୍ଣ୍ଣନା କରିପାରିବ ନାହିଁ।
Buffer.concat ସମ୍ପୂର୍ଣ୍ଣ ବଫରିଂ ଆବଶ୍ୟକ ହେଲେ ବାଇନାରୀ ବିଷୟବସ୍ତୁ ସଂରକ୍ଷଣ କରିପାରେ, କିନ୍ତୁ ସମଗ୍ର ବଡି ସ୍ମୃତିରେ ରଖେ। ପାସ ହେଉଥିବା ପ୍ରତିଛବି ଷ୍ଟ୍ରିମକୁ ସେହି ଖର୍ଚ୍ଚ ଦରକାର ନାହିଁ।