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 бүрэн буферлэлт шаардлагатай үед хоёртын агуулгыг хадгалж чадна, гэхдээ бүх биеийг санах ойд хадгална. Дамжиж буй зургийн урсгалд энэ зардал хэрэггүй.