asp.net-mvc
बंडलिंग और न्यूनतमकरण
खोज…
minification
डाउनलोड समय को गति देने के लिए सीएसएस और जावास्क्रिप्ट फ़ाइलों के आकार को कम करने के लिए उपयोग किया जाता है। यह प्रक्रिया सभी अनावश्यक श्वेत-स्थान, टिप्पणियों, और फ़ाइलों से किसी अन्य गैर-आवश्यक सामग्री को हटाकर की जाती है।
ScriptBundle
या StyleBundle
ऑब्जेक्ट का उपयोग करते समय यह प्रक्रिया स्वचालित रूप से की जाती है। यदि आपको इसे अक्षम करने की आवश्यकता है, तो आपको एक मूल Bundle
ऑब्जेक्ट का उपयोग करना होगा।
उदारण का उपयोग करके उदाहरण
निम्न कोड गैर-रिलीज़ के दौरान आसान डीबगिंग की अनुमति देने के लिए केवल रिलीज़ के दौरान बंडलिंग को लागू करने के लिए प्रीप्रोसेसर निर्देशों का उपयोग करता है (जैसा कि गैर-बंडल फ़ाइलों को आमतौर पर नेविगेट करने में आसान होता है):
public static void RegisterBundles(BundleCollection bundles)
{
#if DEBUG
bundles.Add(new Bundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new Bundle("~/Content/css").Include("~/Content/site.css"));
#else
bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
#endif
}
स्क्रिप्ट और स्टाइल बंडल्स
निम्नलिखित बंडल कोड स्निपेट बंडलकॉन्फिग.कस फ़ाइल के लिए है।
using System.Web.Optimization;
public class BundleConfig
{
// For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery.ui.core.css",
"~/Content/themes/base/jquery.ui.resizable.css",
}
}
अनुप्रयोग_Start () पद्धति के अंदर Global.asax फ़ाइल में बंडल पंजीकृत हैं:
using System.Web.Optimization;
protected void Application_Start()
{
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
बंडलों को आपके दृश्यों में प्रस्तुत किया जाना चाहिए:
@using System.Web.Optimization
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/modernizr")
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/css")
ध्यान दें कि जब आप विकास मोड में होते हैं तो बंडल नहीं होता है (जहां Web.config फ़ाइल में संकलन तत्व डीबग = "सही" पर सेट है)। इसके बजाय, आपके दृश्य में रेंडर स्टेटमेंट में डिबगिंग में आसानी के लिए प्रत्येक व्यक्तिगत फ़ाइल को एक गैर-बंडल, गैर-मिनिफ़ाइड प्रारूप में शामिल किया जाएगा।
एक बार एप्लिकेशन उत्पादन मोड में होता है (जहां Web.config फ़ाइल में संकलन तत्व डिबग = "गलत" पर सेट होता है), बंडलिंग लगेगा।
यह स्क्रिप्ट के लिए जटिलताएं पैदा कर सकता है जो अन्य फ़ाइलों के सापेक्ष पथ को संदर्भित करता है, जैसे कि ट्विटर बूटस्ट्रैप की आइकन फ़ाइलों के संदर्भ। इसे System.Web.Optimization के CssRewriteUrlTransform वर्ग का उपयोग करके संबोधित किया जा सकता है:
bundles.Add(new StyleBundle("~/bundles/css").Include(
"~/Content/css/*.css", new CssRewriteUrlTransform()));
CssRewriteUrlTransform वर्ग बंडल किए गए फ़ाइलों के भीतर निरपेक्ष रास्तों के सापेक्ष Urls को फिर से लिखेगा, ताकि कॉलिंग संदर्भ को बंडल के स्थान पर ले जाने के बाद संदर्भ बरकरार रहेगा (उदाहरण के लिए उपरोक्त कोड का उपयोग करके, "~ / सामग्री / css /" से आगे बढ़ कर) bootstrap.css "से" ~ / बंडल / css / bootstrap.css ")।