Պահպանեք բինար պատկերի պատասխանները Node.js վստահված սերվերում
Անցկացրեք բինար մարմինները Node forward proxy-ով և տեքստի ապակոդավորումը թողեք միայն դիտավորյալ տեքստային ձևափոխումներին։
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Օգտագործեք այս մարմնի ուղին թիրախի ընտրությունից, վերին հոսքի հարցումից և ներքևի հոսքի կարգավիճակի ու վերնագրերի պատրաստումից հետո։ Node հոսքերը սովորաբար տալիս են Buffer; մի կուտակեք դրանք տողում պատկերների կամ այլ անփոփոխ բինար բովանդակության համար։
pipeline-ը համակարգում է հակաճնշումը և տարածում ձախողումները։ Սխալի դեպքում այն կարող է ոչնչացնել նպատակակետը, ուստի մի ենթադրեք, որ դրանից հետո հնարավոր է ուղարկել ևս մեկ HTTP սխալի պատասխան։ Այս հատվածը ամբողջական proxy սերվեր չէ։
Անցնող բայթերի համար պահպանեք ներկայացման համապատասխան մետատվյալները, ինչպիսիք են մեդիայի տեսակը և բովանդակության կոդավորումը, իսկ hop-ին բնորոշ դաշտերը մշակեք փոխանցման կանոններով։ gzip բայթերի և համապատասխան պատասխանի վերնագրերի համեմատությունը ցույց է տալիս կոդավորված և ապակոդավորված ներկայացման ընտրությունը։
HTML-ի դիտավորյալ վերագրումը պահանջում է այլ ուղի՝ ճանաչել մեդիայի տեսակը, մշակել սեղմումը և նշանների հավաքածուն, ձևափոխել տեքստը և ստեղծել մետատվյալներ նոր բայթերի համար։ Հին Content-Length-ը չի կարող նկարագրել փոփոխված մարմին։
Buffer.concat-ը կարող է պահպանել բինար բովանդակությունը, երբ պահանջվում է ամբողջական բուֆերավորում, սակայն պահում է ամբողջ մարմինը հիշողության մեջ։ Անցնող պատկերի հոսքը այդ ծախսի կարիքը չունի։