2013-09-25 15 views
10

Jestem nieco zdezorientowany w sprawie prawidłowego sposobu łączenia plików skryptów i stylów. Obecnie moja BundleConfig.cs wygląda następująco:Poprawny sposób na pakowanie w MVC4

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
      "~/Scripts/jquery-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
      "~/Scripts/jquery-ui-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.unobtrusive*", 
      "~/Scripts/jquery.validate*")); 

// 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 ScriptBundle("~/bundles/knockout").Include(
      "~/Scripts/knockout-{version}.js", 
      "~/Scripts/knockout-{version}.debug.js", 
      "~/Scripts/knockout-sortable.js")); 

bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
      "~/Content/themes/base/jquery.ui.core.css", 
      "~/Content/themes/base/jquery.ui.resizable.css", 
      "~/Content/themes/base/jquery.ui.selectable.css", 
      "~/Content/themes/base/jquery.ui.accordion.css", 
      "~/Content/themes/base/jquery.ui.autocomplete.css", 
      "~/Content/themes/base/jquery.ui.button.css", 
      "~/Content/themes/base/jquery.ui.dialog.css", 
      "~/Content/themes/base/jquery.ui.slider.css", 
      "~/Content/themes/base/jquery.ui.tabs.css", 
      "~/Content/themes/base/jquery.ui.datepicker.css", 
      "~/Content/themes/base/jquery.ui.progressbar.css", 
      "~/Content/themes/base/jquery.ui.theme.css")); 

bundles.Add(new StyleBundle("~/bundles/BootStrapcss").Include(
      "~/BootStrap/css/bootstrap.css", 
      "~/BootStrap/css/bootstrap-fileupload.css")); 

bundles.Add(new StyleBundle("~/bundles/BootStrap").Include(
      "~/BootStrap/tpg-main.css", 
      "~/BootStrap/tpg-internal.css")); 

bundles.Add(new ScriptBundle("~/bundles/BootStrapjs").Include(
      "~/BootStrap/js/bootstrap-fileupload.js", 
      "~/BootStrap/js/bootstrap.js")); 

BundleTable.EnableOptimizations = true; 

powinny pozostać z tym, co mam, czy pakiet wszystkie swoje pliki skryptów do jednego ScriptBundle, a wszystkie moje style w jeden StyleBundle? Chcę osiągnąć najlepszą możliwą wydajność.

Odpowiedz

14

Jeśli zawsze używasz wszystkich plików, zamiast je otwierać i przyklejać je w dwóch pakietach; jeden dla javascript i jeden dla stylów. Mniejsza liczba pakietów oznacza mniej żądań skierowanych do serwera w celu pobrania zasobów, co może skutkować nieznacznie lepszą wydajnością przy pierwszym trafieniu; następnie pliki będą buforowane przez przeglądarkę.

Jeśli nie zawsze używasz wszystkich plików, rozsądniejsze jest dzielenie ich na więcej pakietów.

+6

Aby wyjaśnić tę kwestię, może być konieczne tylko użycie Knockout na jednej lub dwóch stronach, na przykład, a nie całej witryny. Dlatego nie należy pakować go razem ze wszystkim innym, ponieważ zostanie załadowany na strony, na których nie jest używany lub potrzebny. –

+0

@ Moozhe Tak, dziękuję, powinienem rozszerzyć na to trochę więcej za kompletność. – asymptoticFault

+0

Jak połączyć jquery, validate i modernizr w jeden? –

Powiązane problemy