जब यह करना है तो मामलों की वर्तमान स्थिति क्या है
Transfer-Encoding: gzip
या ए
Content-Encoding: gzip
जब मैं उदाहरण के लिए सीमित बैंडविड्थ के साथ ग्राहकों को एक संपीड़ित प्रतिक्रिया को स्वीकार करने की इच्छा को संकेत देने की अनुमति देना चाहता हूं और सर्वर को अंतिम रूप से यह कहना है कि संपीड़ित करना है या नहीं ।
यदि आप इसे संपीड़न का ध्यान रखते हैं, तो बाद में अपाचे के mod_deflate और IIS करते हैं। संपीड़ित होने के लिए सामग्री के आकार के आधार पर, यह अतिरिक्त काम करेगाTransfer-Encoding: chunked
।
इसमें एक भी शामिल होगा Vary: Accept-Encoding
, जो पहले से ही समस्या पर संकेत देता है। Content-Encoding
इकाई का हिस्सा प्रतीत होता है, इसलिए Content-Encoding
मात्राओं को इकाई के परिवर्तन से बदलना, यानी एक अलगAccept-Encoding
मतलब है हेडर का मतलब है जैसे कि कैश अन्यथा समान इकाई के अपने कैश्ड संस्करण का उपयोग नहीं कर सकता है।
क्या इस पर कोई निश्चित उत्तर है कि मैं चूक गया हूं (और यह संदेश में कुछ अपाचे समाचार समूह में एक लंबे धागे में दफन नहीं है)?
मेरी वर्तमान धारणा है:
- ट्रांसफर-एन्कोडिंग वास्तव में वही करने का सही तरीका होगा जो मौजूदा सर्वर और क्लाइंट इनकंटेशन द्वारा कंटेंट-एनकोडिंग के साथ किया जाता है।
- कंटेंट-एनकोडिंग, इसके अर्थ निहितार्थों के कारण, कुछ मुद्दों को उठाता है (सर्वर को क्या करना चाहिए
ETag
जब यह पारदर्शी रूप से प्रतिक्रिया को संकुचित ?) - कारण चिकन'एन'ग है: ब्राउजर इसका समर्थन नहीं करते क्योंकि सर्वर ऐसा नहीं करते क्योंकि ब्राउज़र नहीं करते
इसलिए मैं मान रहा हूं कि सही तरीका एक होगा Transfer-Encoding: gzip
(या, अगर मैं इसके अलावा शरीर को काट दूं, तो यह बन जाएगा Transfer-Encoding: gzip, chunked
)। और छूने का कोई कारण नहीं Vary
याETag
उस मामले में किसी अन्य हेडर किसी क्योंकि यह एक परिवहन-स्तर की बात है।
अभी के लिए मैं 'हॉप-दर-हॉप-नेस' के बारे में बहुत ज्यादा परवाह नहीं करता Transfer-Encoding
, ऐसा कुछ जो दूसरों को पहले और सबसे महत्वपूर्ण के बारे में चिंतित लगता है, क्योंकि प्रॉक्सी क्लाइंट को असम्पीडित और अग्रेषित कर सकते हैं। हालाँकि, समरूपता इसे आगे-आगे (-संकुचित) कर सकती है, यदि मूल अनुरोध में उचित Accept-Encoding
शीर्ष लेख है, जो सभी ब्राउज़रों के मामले में मुझे पता है कि एक दिया गया है।
Btw, यह मुद्दा कम से कम एक दशक पुराना है, उदाहरण के लिए देखें https://bugzilla.mozilla.org/show_bug.cgi?id=68517 ।
इस पर किसी भी स्पष्टीकरण की सराहना की जाएगी। दोनों को मानक-अनुरूप माना जाता है और व्यावहारिक माना जाता है। उदाहरण के लिए, HTTP क्लाइंट लाइब्रेरी केवल पारदर्शी "सामग्री-एन्कोडिंग" का समर्थन करती है जो व्यावहारिकता के खिलाफ एक तर्क होगा।
Transfer-Encoding:gzip
, हालांकि कमांड लाइन कर्ल करता है। सुरक्षित पक्ष पर होने के लिए, दोनों को भेजें, जब तक कि आप chunked और gzip का संयोजन नहीं कर रहे हैं।