Node.js proxy'sinde ikili görsel yanıtlarını koruyun
İkili gövdeleri bir Node yönlendirme proxy'sinden akıtın ve metin kod çözmeyi yalnızca bilinçli metin dönüşümlerine ayırın.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Bu gövde yolunu hedef seçiminden, kaynağa giden istekten ve istemciye durum ile başlıkların hazırlanmasından sonra kullanın. Node akışları genellikle Buffer sağlar; görseller veya değişmeyen diğer ikili içerik için bunları bir dizeye biriktirmeyin.
pipeline karşı basıncı düzenler ve hataları yayar. Hata durumunda hedefi yok edebilir, bu yüzden ardından başka bir HTTP hata yanıtı gönderilebileceğini varsaymayın. Bu parça tam bir proxy sunucusu değildir.
Geçen baytlar için medya türü ve içerik kodlaması gibi ilgili gösterim üst verilerini koruyun, atlama özgü alanları ise iletme kurallarıyla işleyin. gzip baytları ile eşleşen yanıt başlıklarının karşılaştırması kodlanmış ve kodu çözülmüş gösterim arasındaki seçimi gösterir.
HTML'nin bilinçli olarak yeniden yazılması başka bir yol gerektirir: medya türünü tanıyın, sıkıştırmayı ve karakter kümesini işleyin, metni dönüştürün ve yeni baytlar için üst veri üretin. Eski Content-Length değişmiş bir gövdeyi tanımlayamaz.
Buffer.concat tam arabelleğe alma gerektiğinde ikili içeriği koruyabilir, ancak tüm gövdeyi bellekte tutar. Geçen bir görsel akışının bu maliyete ihtiyacı yoktur.