2015-05-19 5 views
13

मैं ASP.net MVC 4. सवाल राज्यों की तरह उपयोग कर रहा हूँ, अगर मैं एक बंडल में (या सीएसएस उस बात के लिए) जे एस फ़ाइलों का एक गुच्छा रखा है, यह स्वचालित रूप से न्यूनतम किया जा होगा? उदाहरण के लिए, मेरी बंडल पढ़ना चाहिए:क्या एएसपीनेट बंडलर स्वचालित रूप से फ़ाइलों को छोटा करता है?

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.js" 
      "~/Scripts/jquery.idletimer.js" 
      )); 

या यह बजाय minified फ़ाइलें शुरू में शामिल करना चाहिए:

 bundles.Add(new ScriptBundle("~/bundles/exampleBundle").Include(
      "~/Scripts/jquery-masked.min.js" 
      "~/Scripts/jquery.idletimer.min.js" 
      )); 

??

संपादित करें: अब मैं सोच रहा हूं कि .min फ़ाइलों को बंडल करने के बजाय किसी भी अनुकूलन को जोड़ता है। क्या यह मूल फ़ाइलों की बजाय बंडल में .min फ़ाइलों सहित प्रदर्शन को बढ़ाएगा? (शायद "मिनीफायर फ़ंक्शन" में कुछ समय लगता है?)

+1

यह सुनिश्चित करने के लिए कि आप इस पैरामीटर को जोड़ सकते हैं BundleTable.EnableOptimizations = true; – rnofenko

उत्तर

13

Asp.Net बंडलर एक एकल फाइल में एक ही बंडल में सभी स्क्रिप्ट बंडल करता है, जिस क्रम में वे बंडल में परिभाषित कर रहे हैं में सूचीबद्ध किया है। इस एकल फ़ाइल को तब ग्राहक को छोटा और वितरित किया जाता है।

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

+1

तो बस स्पष्ट करने के लिए, यदि आपकी निर्देशिका में मिनीफाइड फ़ाइल मौजूद है, तो यह स्वचालित रूप से उस (उत्पादन सत्र के दौरान) तैनात होगी और फ्लाई पर कोई खनन-रूपांतरण नहीं करेगा? – AlbatrossCafe

+3

यदि बंडल में सभी स्क्रिप्ट्स के न्यूनतम संस्करण मौजूद हैं, तो उन्हें अभी भी एक बंडल फ़ाइल में बंडल किया जाएगा, लेकिन उस फ़ाइल को और भी कमी नहीं होगी। अन्यथा, minified संस्करण फ़ाइल में गैर-minified फ़ाइलों के साथ इनलाइन होगा, और फ़ाइल * विलुप्त हो जाएगा। – Claies

13

आपको छोटी फ़ाइलों को शामिल करने की आवश्यकता नहीं है, जो स्वचालित रूप से बंडल इंजन द्वारा किया जाता है। वास्तव में, मुझे याद है सहित minified फ़ाइलों की वजह से समस्याओं (शायद इस नवीनतम MVC संस्करण पर तय हो गई है)

आप इस के बाद से अनुकूलन (bundling और कम करने से) काम नहीं कर रहा बारे में सोच सकते केवल web.config पर प्रदर्शन कर रहे हैं जब debug=false

<system.web> 
    <compilation debug="false" /> 
</system.web> 

भी जब debug = trueBundleTable.EnableOptimizations का उपयोग कर अनुकूलन के लिए मजबूर करने के लिए एक तरीका है। यहाँ आप एक उदाहरण

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-{version}.js")); 

    BundleTable.EnableOptimizations = true; 
} 
1

ये दो अलग-अलग शब्द हैं जिन्हें बंडलिंग और मिलिफिकेशन कहा जाता है।
कमी: क्या आप जेएस फाइलों के संस्करणों को छोटा कर चुके हैं जहां आप चर का नाम बदलकर सामग्री को संपीड़ित करते हैं।
बंडलिंग: पूरी तरह से एक अलग बात है। नेटवर्क राउंडट्रिप्स को कम करने के लिए सब कुछ एक फ़ाइल में गठबंधन करना और इसे एक अनुरोध में क्लाइंट पर डाउनलोड करना बेहतर है।

तो आप इस लाभ को प्राप्त करने के लिए जेएस के न्यूनतम संस्करण को बंडल कर सकते हैं।

+0

हालांकि यह सीधे सवाल का जवाब नहीं दे रहा है, यह * Minification * और * बंडलिंग * के बीच के अंतर के बारे में अच्छी व्याख्या है। –

संबंधित मुद्दे