Node.js proksisida ikkilik rasm javoblarini saqlang
Ikkilik jismlarni Node oldingi proksisi orqali o‘tkazing va matn dekodlashni faqat ataylab qilingan matn o‘zgartirishlarga ajrating.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Ushbu jism yo‘lidan nishon tanlangandan, yuqori oqimga so‘rov yuborilgandan va quyi oqim holati hamda sarlavhalari tayyorlangandan keyin foydalaning. Node oqimlari odatda Buffer beradi; ularni rasmlar yoki o‘zgarmas boshqa ikkilik tarkib uchun satrga jamlamang.
pipeline teskari bosimni muvofiqlashtiradi va xatolarni tarqatadi. Xatolikda u manzilni yo‘q qilishi mumkin, shuning uchun keyin yana bir HTTP xato javobini yuborish mumkin deb o‘ylamang. Bu parcha to‘liq proksi server emas.
O‘tib borayotgan baytlar uchun media turi va tarkib kodlashi kabi tegishli tasvir metama’lumotlarini saqlang, hopga xos maydonlarni esa uzatish qoidalari bilan ishlang. gzip baytlari va mos javob sarlavhalarining taqqoslanishi kodlangan va dekodlangan tasvir orasidagi tanlovni ko‘rsatadi.
HTML ni ataylab qayta yozish boshqa yo‘lni talab qiladi: media turini taning, siqishni va belgilar to‘plamini ishlang, matnni o‘zgartiring va yangi baytlar uchun metama’lumot yarating. Eski Content-Length o‘zgargan jismni tasvirlay olmaydi.
Buffer.concat to‘liq buferlash zarur bo‘lganda ikkilik tarkibni saqlab qolishi mumkin, lekin butun jismni xotirada ushlab turadi. O‘tib borayotgan rasm oqimiga bu xarajat kerak emas.