最近项目中用到了easy ui ,但是在配置BundleConfig 的时候出现了问题,easy ui的脚本jquery.easyui.min.js 压缩后出现各种脚本错误,总是莫名其妙的 i标量错误,xx未定义。其实在其他项目中也会遇到压缩后报错的问题,只是js文件比较小,直接在页面就引用了,不过easyui文件有700kb左右,直接引用会导致浏览器无法出现200 OK(from cache)缓存,增加http开销。

  百度,谷歌也没有太好的解决办法。只能自己想办法了,通过分析System.Web.Optimization源码,发现在资源合并前会对ScriptBundle应用Transforms。最后发现只要Bundle在加入 BundleCollection之前清空Transforms就不会在压缩原始资源了。

明白原理也有解决方案了,比如:

1.在 bundles.Add(...)前清空Bundle.Transforms:

  • 优点:简单,无需任何额外附件代码即可实现
  • 缺点:不能对Include(... ...)的每一项资源单独设定是否压缩
var scriptBundle=new ScriptBundle("~/Content/jquery.easyui/1.4.5/js").Include(
"~/Content/jquery.easyui/1.4.5/jquery.easyui.min.js",
"~/Content/jquery.easyui/1.4.5/locale/easyui-lang-zh_CN.js");
scriptBundle.Transforms.Clear();
bundles.Add(scriptBundle);

  

2.写一个扩展方法,清空Transforms并返回Bundle:

  • 优点:简单;
  • 缺点:不能对Include(... ...)的每一项资源单独设定是否压缩;
public static class BundleEx
{
public static Bundle NoMinify(this Bundle scriptBundle)
{
scriptBundle.Transforms.Clear();
return scriptBundle;
}
}
bundles.Add(new ScriptBundle("~/Content/jquery.easyui/1.4.5/js").Include(
"~/Content/jquery.easyui/1.4.5/jquery.easyui.min.js",
"~/Content/jquery.easyui/1.4.5/locale/easyui-lang-zh_CN.js").NoMinify());

  

3.自己继承 ScriptBundle重写Transforms逻辑,或者重写GenerateBundleResponse(BundleContext context)不应用Transform;

  • 优点:灵活,可以单独控制每个文件是否进行压缩;
  • 缺点:额外增加代码

Mvc 之System.Web.Optimization 压缩合并如何让*.min.js 脚本不再压缩的更多相关文章

  1. MVC 之 System.Web.Optimization找不到引用

    在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...

  2. MVC 中 System.Web.Optimization 找不到引用

    在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...

  3. System.Web.Optimization对脚本和样式表的操作

    这个也是本章重点向描述的部分,首先我们可以使用VS2012RC来新建一个MVC4.0项目,版本可以为4.0或4.5.在Global.asax文件代码中,我们发现已经把过滤器,路由器,以及对样式表和脚本 ...

  4. System.Web.Optimization 合并压缩技术的使用

    捆绑和压缩原理是:将多个css文件动态合并和压缩为一个css文件.多个js文件动态合并和压缩为一个js文件,如此达到减少浏览器对服务器资源文件的请求数量.缩小资源文件的尺寸来提高页面反应速度的目的.A ...

  5. 使用System.Web.Optimization对CSS和JS文件合并压缩

    在ASP.NET MVC 中JS/CSS文件动态合并及压缩通过调用System.Web.Optimization定义的类ScriptBundle及StyleBundle来实现. 大致步骤如下: 1.A ...

  6. 空MVC项目找不到System.Web.Optimization的处理办法

    install-package Microsoft.AspNet.Web.Optimization Create the bundle in Global.asax Application_Start ...

  7. MVC项目内无法添加System.Web.Optimization

    MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization

  8. .net mvc System.Web.Optimization 、System.Data.Entity.Infrastructure找不到

    在MVC4的开发中,如果在App_Start目录下BundleConfig.cs类没有找不到引用System.Web.Optimization,可以使用程序包管理控制台进行安装到使用的项目 打开 工具 ...

  9. MVC5手工添加System.Web.Optimization

    VS2012web手工添辑一个空的mvC5的项目,添加EF6的支持,在别的项目里复制了母版页_Layout.cshtml过来,发现Styles.Render未引用,这个引用使用的命名空间是System ...

随机推荐

  1. [Android]优化相关

    尽量减少布局的层次,最多10层,可以通过LinearLayout向RelativeLayout的转变来减少层的数量 使用ListView的时候,getView方法中的对象尽量重用

  2. PBR

    https://iwantthatcake.wordpress.com/2012/02/22/real-time-radiosity-geometrics-enlighten/ http://www. ...

  3. Win10 磁盘占用 100% 有效解决办法

    立即查看 任务管理器,看看是不是有一个 服务主机 unistack服务组或者找类似名称的,点开以后你会看到里面有同步主机 blablah请你毫不犹豫的结束它!结束它!结束它! 按下WIN+R调出运行, ...

  4. Python之路3【知识点】白话Python编码和文件操作

    Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...

  5. iOS and JAVA 的 RSA 加密解密 (转载整理 )

    参考原文地址:http://www.cnblogs.com/makemelike/articles/3802518.html (至于RSA的基本原理,大家可以看 阮一峰的网络日志 的 RSA算法原理( ...

  6. Eclipse集成Tomcat:6个常见的”how to”问题

    学习一门新技术通常是一个很困难的过程,当你想要同时学习两门有交叉的新技术的时候,这个过程会变得更困难.Tomcat和Eclipse是Java EE开发中最流行的2个必备神器,因此,为了成为一个专业的开 ...

  7. 使用自签名的方式创建Docker私有仓库

    Docker推荐使用CA机构颁发的TLS(Transport Layer Security Protocol)证书来保护docker仓库的安全,但是我们也可以选择使用HTTP或者自签名证书的方式实现本 ...

  8. android Viewpager HorizontalScrollView 实现分页栏拖拽

    源码:http://files.cnblogs.com/android100/ViewPaperDemo.rar首先我们先看一个效果:  前两个是网易的,它做的title不能拖拽,.不过点击动画效果挺 ...

  9. 疯狂了!当游戏爱上MongoDB会怎么样???

    导读 前端时间魔兽这个电影我相信大家都看过了哈,作为一个码农,有时候我也会去思考魔兽世界这个游戏背后他的一些设计和实现,比如他用什么数据库.当然真正用什么数据库这个我是不确定的,我们今天的主题是当游戏 ...

  10. 一次erlang 节点CPU严重波动排查

    新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增 ...