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 ಪೂರ್ಣ ಬಫರಿಂಗ್ ಅಗತ್ಯವಿದ್ದಾಗ ಬೈನರಿ ವಿಷಯವನ್ನು ಉಳಿಸಬಹುದು, ಆದರೆ ಇಡೀ ಬಾಡಿಯನ್ನು ಮೆಮೊರಿಯಲ್ಲಿ ಇಡುತ್ತದೆ. ಹಾದುಹೋಗುವ ಚಿತ್ರ ಸ್ಟ್ರೀಮ್ಗೆ ಆ ವೆಚ್ಚದ ಅಗತ್ಯವಿಲ್ಲ.