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设置得细一些,但这样的话就可能导致更多次的请求,从而效率有所下降,总之就是要自己好好权衡了。

最新文章

  1. SpringMVC的工作原理
  2. JAVA一个关于传递引用的测试
  3. div模块变灰
  4. js执行引擎(js解释器)
  5. 手机网页中的hover效果实现
  6. Queuing(以前写的没整理)
  7. Python当前文件路径与文件夹删除操作
  8. 解决NSURLConnection finished with error - code -1100错误
  9. rem 自适应、整体缩放
  10. 360在线网站安全检测,web安全测试AppScan扫描工具,XSS常用的攻击手法
  11. BZOJ 4571 【SCOI2016】 美味
  12. ZOJ 2965 Accurately Say &quot;CocaCola&quot;!
  13. Windows系统环境变量之path环境变量(Java, Python环境变量配置)
  14. 免费180天的Ashampoo Anti-Virus 2014
  15. npm 常用指令
  16. wcur LOCATE +
  17. HDU 3345
  18. 从Entity Framework的实现方式来看DDD中的repository仓储模式运用
  19. css里面鼠标的形状-----》easyui哪点事
  20. 关于&quot;作数类型冲突: nvarchar 与 image 不兼容&quot;的问题

热门文章

  1. mac 用 brew
  2. PHP开篇之环境的搭建
  3. Mac中编译安装Qt 4.4
  4. 数据库存储安全之(MD5+盐)加密
  5. PHP开发搜索引擎技术全解析
  6. Pomelo服务器琐碎方法
  7. function 的声明
  8. amoeba-mysql配置安装(收集整理)
  9. 阿里云主机安装Memcached
  10. Zepto picLazyLoad Plugin,图片懒加载的Zepto插件