zoukankan      html  css  js  c++  java
  • MVC4的bundling功能简介

    Bundling and Minification是asp.net mvc4中一项可以减少用户请求等待时间,提升用户体验的一项技术。在VS2010中新建MVC4项目是,如果选择"基本"项目,项目模板就会默认使用该项技术。但如果是选择“空”项目,或者想为自己原来的项目添加这项技术,该如何做呢。主要要以下几步:

    • 在项目中选择引入System.Web.Optimization。

    • 在Global.asax加入BundleConfig.RegisterBundles(BundleTable.Bundles)

    • 在两个web.config中加入<add namespace="System.Web.Optimization" />(不加系统会提示CSHTML页中的SCRIPT等不存在)

    • 在app_start下建立BundleConfig.cs,建立绑定。内容如下:

    •         // 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"));
      
                  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*"));
      
                  bundles.Add(new ScriptBundle("~/bundles/knockout").Include(
                              "~/Scripts/knockout-{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-*"));
      
                  //所有的js
                  bundles.Add(new ScriptBundle("~/bundles/js_all").Include(
                      "~/Scripts/jquery-{version}.js",
                      "~/Scripts/jquery-ui-{version}.js",
                      "~/Scripts/jquery.unobtrusive*",
                      "~/Scripts/jquery.validate*",
                      "~/Scripts/knockout-{version}.js",
                      "~/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.*"));
      
                  //所有的css
                  bundles.Add(new StyleBundle("~/Content/css_all").Include(
                      "~/Content/site.css",
                      "~/Content/themes/base/jquery.ui.*"));
              }

      再在母版页中加入:

    •     @Styles.Render("~/Content/css_all")
          @Scripts.Render("~/bundles/js_all")

      大功告成,这里还有一步很关键的,就是把WebConfig中的Debug设置改为false,然后<Ctrl>+<F5>看网站,非常棒,对吧……

      也许你要说我有些地方其实不需要那么多的js或者css呢,它都帮我捆了起来岂不是会降低效率?——基本上不会,因为浏览器都有缓存的功能,除非你按F5刷新页面,(如果是苹果系统的话我记得是<Command>+<R>),浏览器才会尝试从服务器上重新下载js和css,就算重新下载,经过捆绑和压缩的js和css也没多大,效率还行的。如果你实在不想捆那么多js或者css的,那就把bundling设置得细一些,但这样的话就可能导致更多次的请求,从而效率有所下降,总之就是要自己好好权衡了。

  • 相关阅读:
    【重要】关于WEBSERVICE的远程访问问题
    【系统】windows2003 至少有一个服务或驱动程序无法加载或错误
    【总结】IE6、IE7、IE8、Firefox、Opera CSS hack区分
    【总结】DIV+CSS有可能遇到的问题
    【精华】Asp优化之缓存技术
    【总结】ASP字符串转换函数用法
    【重要】条形码原理39码和EAN13码
    【精华】教你如何制作无人值守安装Win XP系统盘
    【原创】解决IE8下minheight值使bottom:0px失效的方法
    【手机】Windows Mobile手机软件安装卸载方法
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3629401.html
Copyright © 2011-2022 走看看