IIS7 gzip सक्षम करें


229

मैं js और css जैसी स्थिर फ़ाइलों को gzip करने के लिए IIS7 को कैसे सक्षम कर सकता हूं और अगर ग्राहक को भेजने से पहले IIS7 वास्तव में उन्हें gziping कर रहा है तो मैं कैसे परीक्षण कर सकता हूं?

जवाबों:


243

विन्यास

आप पूरी तरह से अपनी Web.configफ़ाइल में GZIP संपीड़न को सक्षम कर सकते हैं । यह विशेष रूप से उपयोगी है यदि आप साझा होस्टिंग पर हैं और IIS को सीधे कॉन्फ़िगर नहीं कर सकते हैं, या आप चाहते हैं कि आपका कॉन्फ़िगरेशन आपके द्वारा लक्षित सभी वातावरणों के बीच ले जाए।

<system.webServer>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

परिक्षण

यह देखने के लिए कि संपीड़न काम कर रहा है या नहीं, फ़ायरफ़ॉक्स के लिए Chrome या Firebug में डेवलपर टूल का उपयोग करें और सुनिश्चित करें कि HTTP प्रतिसाद शीर्ष लेख सेट किया गया है:

Content-Encoding: gzip

ध्यान दें कि यह हेडर उपस्थित नहीं होगा यदि प्रतिक्रिया कोड 304 (संशोधित नहीं) है। यदि ऐसा है, तो एक पूर्ण रिफ्रेश (होल्ड शिफ्ट या नियंत्रण जब आप रिफ्रेश बटन दबाते हैं) करें और फिर से जांचें।


@DenNukem, क्षमा करें, मैं वास्तव में निश्चित नहीं हूं। मैंने केवल IIS7 पर इसका परीक्षण किया। कोई और टिप्पणी करने के लिए परवाह है?
ड्रू नोकें

21
खबरदार - यह केवल तभी काम करता है जब httphost में एप्लिकेशनहोस्ट.कोफिग को अनलॉक किया गया हो। डिफ़ॉल्ट रूप से, अनुभाग संशोधनों के लिए बंद है, इसलिए web.config में ओवरराइडिंग काम नहीं करता है। इस पर कई घंटे बर्बाद हुए। stackoverflow.com/a/2894695/245460 , टिप्पणी bellow लेख देखें।
कारेल क्राल

वेब रोल की इसकी स्थापित सुविधा सुनिश्चित करें, और MSDN से भी: "आप MIME प्रकारों के लिए वाइल्डकार्ड प्रविष्टियाँ भी जोड़ सकते हैं। हालाँकि, आप MIME प्रकार केवल वेब सर्वर स्तर के लिए सेट कर सकते हैं। उदाहरण के लिए, स्थैतिक संपीड़न सक्षम करने के लिए। डिफ़ॉल्ट वेबसाइट के लिए सभी MIME प्रकार, पहले सर्वर स्तर के लिए MIME प्रकारों के लिए वाइल्डकार्ड प्रविष्टियाँ जोड़ें, और फिर डिफ़ॉल्ट वेबसाइट के लिए स्थैतिक संपीड़न सक्षम करें। "
ल्यूक पुप्लेट

12
डायनेमिक कंप्रेशन भी तब तक काम नहीं करेगा जब तक कि आपके पास सर्वर पर डायनामिक कंटेंट कंप्रेशन मॉड्यूल स्थापित न हो (वेब ​​प्लेटफॉर्म इंस्टॉलर के माध्यम से प्राप्य)। यदि आप Css / Js बंडलों का उपयोग कर रहे हैं, तो आपको इसकी आवश्यकता होगी।
मार्क

केवल सीएसएस संकुचित हो रहा है, .jsनहीं। साथ ही, जोड़ने की कोशिश की application/x-javascript। टॉमकैट के साथ एक साथ उपयोग करना, इसलिए directoryपैरामीटर को हटा दिया गया ।
कोडिंग_डॉट

58

आपको Windows विशेषताएँ नियंत्रण कक्ष में सुविधा को सक्षम करने की आवश्यकता होगी:

IIS सुविधा स्क्रीनशॉट


16
Windows Server 2008 R2 में, यह सर्वर प्रबंधक> भूमिका> वेब सर्वर (IIS) के अंतर्गत स्थित है। "भूमिका" अनुभाग में "भूमिका जोड़ें सेवाएं" पर क्लिक करें। "डायनामिक कंटेंट कंप्रेशन" को "प्रदर्शन" हेडर के अंतर्गत सूचीबद्ध किया गया है।
जोनाथन Little

37

ग्लोबल Gzip HttpModule में

यदि आपके पास अंतिम IIS उदाहरण (साझा होस्टिंग ...) तक पहुंच नहीं है, तो आप एक HttpModule बना सकते हैं जो इस कोड को हर HttpApplication.Begin_Request घटना में जोड़ता है:

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

परिक्षण

कुडोस, कोई भी समाधान परीक्षण के बिना नहीं किया जाता है। मैं फ़ायरफ़ॉक्स प्लगइन " लाइवहेडर्स " का उपयोग करना पसंद करता हूं यह ब्राउज़र और सर्वर के बीच संपीड़न, फ़ाइल आकार (जो आप सर्वर पर फ़ाइल आकार की तुलना कर सकते हैं) सहित हर http संदेश के बारे में सभी जानकारी दिखाता है।


3
मैं साझा होस्टिंग का उपयोग कर रहा हूं और GZIP आउटपुट कंप्रेशन को सक्षम करने के लिए किसी भी कोड को लिखने की आवश्यकता नहीं है। यह अकेले Web.config के माध्यम से संभव था। मेरा उत्तर देखें: stackoverflow.com/questions/702124/enable-iis7-gzip/...
ड्रयू Noakes

2
मैंने पहली तीन पंक्तियों को उस एक aspx पृष्ठ के प्रारंभ में रखा था जिसे मैं संक्षिप्त करना चाहता था, और यह काम करता है! धन्यवाद! यह किसी भी अन्य दृष्टिकोण की तुलना में बहुत कम परेशानी है, और यह मेरे लिए IIS 6 पर काम करता है।
डेननुकम

1
यह बिल्कुल ऐसा करने का तरीका है।
मैथ्यू जेम्स डेविस


2

मुझे केवल चार्ली उल्लेख के रूप में विंडोज़ की विशेषताओं में फ़ीचर जोड़ने की आवश्यकता थी। ऐसे लोग जो इसे विंडो 10 या सर्वर 2012+ पर नहीं पा सकते हैं वे इसे नीचे के रूप में पाते हैं। मैंने थोड़ा संघर्ष किया

विंडोज 10

यहां छवि विवरण दर्ज करें

विंडोज़ सर्वर 2012 R2

यहां छवि विवरण दर्ज करें

विंडो सर्वर 2016

यहां छवि विवरण दर्ज करें


1

यदि आप Firebug के साथ YSlow का उपयोग करते हैं और अपने पृष्ठ के प्रदर्शन का विश्लेषण करते हैं, तो YSlow आपको निश्चित रूप से बताएगा कि आपके पृष्ठ पर कौन-सी कलाकृतियाँ हैं gzip'd नहीं!


1

अगर आप डायनेमिक पेज (जैसे aspx) को गज़ब करने की कोशिश कर रहे हैं और यह काम नहीं कर रहा है, तो शायद इसका कारण यह है कि विकल्प सक्षम नहीं है (आपको विंडोज फीचर्स का उपयोग करके डायनामिक कंटेंट कंप्रेशन मॉड्यूल को इंस्टॉल करने की आवश्यकता है):

http://support.esri.com/en/knowledgebase/techarticles/detail/38616



0

फ़ायरबग एडऑन के साथ फ़ायरफ़ॉक्स स्थापित करने का प्रयास करें। मैं इसका उपयोग कर रहा हूँ; वेब डेवलपर के लिए बढ़िया टूल।

मैंने web.config का उपयोग करके अपने IIS7 में Gzip संपीड़न को सक्षम किया है।


Google के पास एक पृष्ठ परीक्षण भी उपलब्ध है: Developers.google.com/speed/pagespeed/insights
डॉ। एरोन डिश्नो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.