आईआईएस संपीड़न के दो प्रकार का समर्थन करता है। applicationHost.config के अनुसार, उन्हें विभिन्न मॉड्यूल द्वारा नियंत्रित किया जाता है: DynamicCompressionModule (compdyn.dll) और StaticCompressionModule (compstat.dll), और विभिन्न प्रकार के अनुरोध को संपीड़ित करने के लिए कॉन्फ़िगर किए गए हैं। साथ ही, मुझे लगता है कि गतिशील संपीड़न संपीड़ित अनुरोधों को कैश नहीं करता है क्योंकि स्थिर संपीड़न का विरोध होता है (डिफ़ॉल्ट रूप से, संपीड़ित फ़ाइलों को %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
पर सहेजा जाता है)।IIS7: <strong>स्थिर</strong> सामग्री संपीड़न और <strong>गतिशील</strong> सामग्री संपीड़न: स्थिर और गतिशील सामग्री संपीड़न के बीच मतभेद
हालांकि, उन स्पष्ट मतभेदों के अलावा, मुझे संदेह है कि कुछ और है। मुझे लगता है कि वे आईआईएस पाइपलाइन से थोड़ा अलग तरीके से हुक करते हैं। क्या किसी के पास कुछ और विवरण होंगे?
जिस तरह से मुझे पता चला कि I was toying with a custom module for modifying CSS files on fly था। जब स्थिर संपीड़न चालू किया गया था (और फाइलों के डिफ़ॉल्ट सेट को संभालने के लिए सेट किया गया है, यानी पाठ/सीएसएस), कैश किए गए अनुरोध पर मेरे कस्टम मॉड्यूल को पहले से ही gzipped सामग्री परोसा गया था। जब मैंने गतिशील रूप से संपीड़ित अनुरोध की सूची में टेक्स्ट/सीएसएस स्थानांतरित किया, तो यह सब काम करना शुरू कर दिया। लेकिन मैं एक और ठोस सबूत रखना चाहता हूं कि यह वास्तव में करने का सही तरीका है। क्या कुछ अन्य ज्ञात परिणाम/समस्याएं हैं?
अद्यतन: मुझे लगता है कि मेरे पास एक सिद्धांत हो सकता है कि यह क्यों हो रहा है। यह 100% सही नहीं हो सकता है, लेकिन कम से कम यह मनाया व्यवहार समझा सकता है। मुझे लगता है कि स्थिर संपीड़न मॉड्यूल (कुछ अन्य लोगों के अलावा) निम्न इवेंट के लिए खुद को पंजीकृत करता है:
RQ_MAP_REQUEST_HANDLER
RQ_EXECUTE_REQUEST_HANDLER
फिर जब स्थिर फ़ाइल के लिए एक अनुरोध पेश किया जाता है, OnMapRequestHandler की जाँच में स्थिर संपीड़न मॉड्यूल फ़ाइल संकुचित कर दिया गया है कि क्या इससे पहले और क्या वास्तविक फ़ाइल नहीं बदला गया है। यदि ऐसा है, तो यह अनुरोध स्वयं को फिर से मैप करेगा (IMapHandlerProvider का उपयोग करके उपयुक्त पुनर्निर्देशन लौटा रहा है)। जब बाद में यह वास्तव में OnExecuteRequestHandler में प्रतिक्रिया प्रदान करता है, तो यह संपीड़ित फ़ाइल भेजता है। यदि, दूसरी तरफ, फ़ाइल को पहले से संपीड़ित नहीं किया गया है या यदि यह बदल गया है, तो यह मैपिंग रीडायरेक्ट नहीं करता है और स्थिर सामग्री मॉड्यूल अनुरोध को पूरा करता है और बाद में OnPostExecuteRequestHandler सामग्री को संपीड़ित करता है (और इसके कैश को अपडेट करता है) । जैसा ऊपर बताया गया है, मैं यह नहीं कह रहा हूं कि यह ठीक है (मुझे स्रोत कोड नहीं पता है), यह केवल एक अनुमान हो सकता है। इसके अलावा, गतिशील संपीड़न मॉड्यूल में से कोई भी संभवतः ऐसा नहीं करता है। यह कभी-कभी RQ_EXECUTE_REQUEST_HANDLER के बाद आउटगोइंग प्रतिक्रियाओं को संकुचित करता है।