2009-03-21 36 views
11

मैं वर्तमान में एक होस्टेड वर्चुअल सर्वर पर हूं, मैं अपने Asp.Net 3.5 साइट के लिए GZip संपीड़न को सक्षम करना चाहता हूं, मैं कैसे शुरू करने के बारे में जाऊं?सीएस/जेएस जीजेप संपीड़न Asp.Net

मैं 'पैक' जे एस फ़ाइलों का उपयोग कर की कोशिश की है, लेकिन वे काम नहीं करते, मैं क्योंकि वे ठीक से समाधान नहीं कर रहे हैं यह है यह सोचते हैं रहा हूँ ...?

उत्तर

19

जीआईएसआईपी आईआईएस द्वारा संभाला जाना चाहिए, आईआईएस का कौन सा संस्करण आप चल रहे हैं?

क्लाइंट एक GZiped संस्करण के लिए सर्वर से पूछने के लिए ज़िम्मेदार है। सर्वर दो चीजों की तलाश करेगा, अनुरोध http 1.1 है, और स्वीकृति-एन्कोडिंग का हेडर: gzip। एक आसान तरीका है इन हेडर के लिए देखने के लिए उपयोग करने के लिए firebug

IIS6 है - GZip आईआईएस के साथ सक्रिय किया जा सकता स्नैप-में। Microsofts MSDN Topic On Gzip With IIS6

IIS7 - GZip web.config httpCompression एक्सएमएल टैग Nick Berardi's Getting IIS 7 to Compress JavaScript

का उपयोग कर को कम करने और जावास्क्रिप्ट फ़ाइलें पैकिंग, अपने सफेद स्थान को निकाल और अपने चर नाम को छोटा कर JavaScript का कुल आकार कम करने का प्रभाव के साथ सक्रिय किया जा सकता।

+0

आईआईएस 6 के लिए ग्रेट वॉक-थ्रू: http://engineering.leads360.com/post/9301650692/http-compression-gzip-on-iis-6 –

1

दूसरा यह है कि आईआईएस इसे कॉन्फ़िगर करने का स्थान है। यदि आप सीधे आईआईएस नहीं बदल सकते हैं तो आप स्वीकृति-एन्कोडिंग के लिए जांच करने वाले सभी अनुरोधों के लिए एक हैंडलर जोड़ सकते हैं: gzip या deflate सेटिंग्स। फिर आप SharpZipLib जैसे कुछ का उपयोग करके सही संपीड़न करते हैं। हालांकि यह जल्दी से kludgey हो जाता है।

आपको सीएसएस या जेएस जैसी अपनी स्थिर फाइलों को मैन्युअल रूप से gzipping में कुछ सीमित सफलता मिलेगी। आप अपने html में styles.css.gz और scripts.js.gz शामिल कहो, और आप gzipped पाठ के लिए माइम प्रकार के लिए GZ विस्तार के नक्शे (है यह application/x-gzip?) ब्राउज़र (यानी, फ़ायरफ़ॉक्स, सफारी, शायद क्रोम) यह ठीक संभाल लेंगे का एक बहुत। लेकिन कुछ ब्राउज़र नहीं होंगे, और आप उन्हें छोड़ रहे हैं (लिंक, शायद पुराने ओपेरा)।

7

ऐसा करने का मेरा पसंदीदा तरीका YUI Compressor जैसे संपीड़न उपकरण का उपयोग करना होगा और इसे निर्माण प्रक्रिया का हिस्सा बनाना होगा (छोटा करने के बाद, संपीड़न अनुपात इतना ऊंचा नहीं होगा। या आप दोनों का उपयोग कर सकते हैं। आपको नीचे दी गई अधिक प्रदर्शन समस्या को याद नहीं करना चाहिए)।

आईआईएस द्वारा संपीड़न के साथ मुख्य समस्याओं में से एक यह है कि यह एक एकल फाइल में सभी जे एस/सीएसएस फ़ाइलों पैक नहीं करता है। इसलिए यदि आपकी साइट में 7 जेएस फ़ाइलें और 20 सीएसएस हैं (आश्चर्यजनक रूप से यह बहुत आम है) तो यह आपके डेटा को प्राप्त करने के लिए 27 HTTP राउंड ट्रिप लेगा। ऐसा करने के लिए एक HTTP हैंडलर लिखना साझा होस्टिंग वाले लोगों के लिए एक अच्छा विचार है।

एक साधारण निर्माण algo एक जे एस/सीएसएस रूट निर्देशिका में फ़ाइल बनाने

If(build.config == release) { 
Add your js file in order to the make files. 
    e.g. jQuery.js jQuery.form.js jQuery.container.js custom.js 
Split and pass it as params to YUI 
Compress 
O/P to site.js 
Delete all the above files. 
} 

रिलीज मोड में आप पेज गुरु केवल site.js

संपादित उल्लेख करना चाहिए करने के लिए किया जाएगा : वाईयूआई और नैन एकीकृत करने के लिए यहां link है।
संपादित करें: जस्टिन एथेरेज ने SquishIt नामक सीएसएस/जेएस फ़ाइल को गठबंधन और संपीड़ित करने के लिए एक शानदार टूल जारी किया है।

1

आप स्क्रिप्ट्स को जीज़िप करने के लिए कोड का भी उपयोग कर सकते हैं।जिस तरह से यह काम करता है वह यह है कि आप संपीड़ित फ़ाइल को सही शीर्षलेखों के साथ वितरित करने के लिए ASP.NET पृष्ठ का उपयोग करते हैं (ब्राउजर को यह बताते हुए कि यह स्ट्रीम संपीड़ित है)। मैंने एक लेख लिखा है कि जीजीआईपी संपीड़न को मिनीफाइंग (यूयूआई का उपयोग करके) और स्क्रिप्ट्स (सर्वर के लिए कम राउंड ट्रिप) को बंडल करने के साथ कैसे उपयोग किया जाए, आपको http://www.codeproject.com/KB/custom-controls/smartinclude.aspx

1

मैं एक आसान छोटा उपयोग कर रहा हूं मेरे सीएसएस minification के लिए सर्वर नियंत्रण, StyleManager कहा जाता है। यह यूयूआई कंप्रेसर अंडर-द-हूड का उपयोग करता है।

मैन्युअल रूप से वाईयूआई सी जोड़ने से आपकी साइट में जोड़ना आसान है, और इसका उपयोग एएसपीनेट के स्क्रिप्ट मैनेजर की तरह है, इसलिए इसका उपयोग करने में तेज़ी हो रही है।

सबसे महत्वपूर्ण बात यह है कि यह आपकी सीएसएस फ़ाइलों को भी जोड़ती है। तो बजाय 10 सीएसएस फ़ाइलों की तरह होने की यह सिर्फ 1, भी संकुचित हो जाएगा जो आदि हो जाएगा डाउनलोड करने के लिए

इसे देखें - gStyleManager.com

1

मैं एक ही के लिए उपयोग कर "हवा निकालना" के रूप में यह है पर विचार करेंगे GZip से अधिक कुशल। मैंने दोनों के लिए कोड जोड़े हैं।

अपनी साइट पर इसे जोड़ने के लिए, एक टेक्स्ट फ़ाइल बनाएं और फ़ाइल पर अंडरविवेन कोड पेस्ट करें और फिर इसे Global.asax के रूप में सहेजें। अब, इस फ़ाइल को अपनी साइट की जड़ में जोड़ें।

<%@ Application Language="C#" %> 
<%@ Import Namespace="System.IO" %> 
<%@ Import Namespace="System.IO.Compression" %> 
<script runat="server"> 
void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     HttpApplication app = sender as HttpApplication; 
     string acceptEncoding = app.Request.Headers["Accept-Encoding"]; 
     Stream prevUncompressedStream = app.Response.Filter; 

     if (!(app.Context.CurrentHandler is Page || 
      app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") || 
      app.Request["HTTP_X_MICROSOFTAJAX"] != null) 
      return; 

     if (acceptEncoding == null || acceptEncoding.Length == 0) 
      return; 

     acceptEncoding = acceptEncoding.ToLower(); 

    if (acceptEncoding.Contains("deflate") || acceptEncoding == "*") 
     { 
     // defalte 
      app.Response.Filter = new DeflateStream(prevUncompressedStream, 
       CompressionMode.Compress); 
      app.Response.AppendHeader("Content-Encoding", "deflate"); 
     } 
     else if (acceptEncoding.Contains("gzip")) 
     { 
      // gzip 
      app.Response.Filter = new GZipStream(prevUncompressedStream, 
       CompressionMode.Compress); 
      app.Response.AppendHeader("Content-Encoding", "gzip"); 
     } 
    } 
</script> 
0

पिछली पोस्ट एएसपीएक्स पृष्ठों के लिए अच्छी तरह से काम करती है लेकिन सीएसएस और जेएस फाइलों के लिए नहीं। चाल css और js फ़ाइलों को शामिल करने में संपीड़न के लिए है: फ़ाइल .css.aspx और .js.aspx फाइलों में .css.aspx और .js.aspx

  • डालने <%@ Page ContentType="text/css" %> और <%@ Page ContentType="text/javascript" %> करने के लिए अपने .css और .js फ़ाइलों के एक्सटेंशन

    1. परिवर्तन
    2. .css.aspx और .js.aspx फ़ाइलों को .css और .js फ़ाइलों के बजाय अपने पृष्ठों में
    3. शामिल करें
  • संबंधित मुद्दे