Mvc 之System.Web.Optimization 压缩合并如何让*.min.js 脚本不再压缩
最近项目中用到了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 脚本不再压缩的更多相关文章
- MVC 之 System.Web.Optimization找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- MVC 中 System.Web.Optimization 找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- System.Web.Optimization对脚本和样式表的操作
这个也是本章重点向描述的部分,首先我们可以使用VS2012RC来新建一个MVC4.0项目,版本可以为4.0或4.5.在Global.asax文件代码中,我们发现已经把过滤器,路由器,以及对样式表和脚本 ...
- System.Web.Optimization 合并压缩技术的使用
捆绑和压缩原理是:将多个css文件动态合并和压缩为一个css文件.多个js文件动态合并和压缩为一个js文件,如此达到减少浏览器对服务器资源文件的请求数量.缩小资源文件的尺寸来提高页面反应速度的目的.A ...
- 使用System.Web.Optimization对CSS和JS文件合并压缩
在ASP.NET MVC 中JS/CSS文件动态合并及压缩通过调用System.Web.Optimization定义的类ScriptBundle及StyleBundle来实现. 大致步骤如下: 1.A ...
- 空MVC项目找不到System.Web.Optimization的处理办法
install-package Microsoft.AspNet.Web.Optimization Create the bundle in Global.asax Application_Start ...
- MVC项目内无法添加System.Web.Optimization
MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization
- .net mvc System.Web.Optimization 、System.Data.Entity.Infrastructure找不到
在MVC4的开发中,如果在App_Start目录下BundleConfig.cs类没有找不到引用System.Web.Optimization,可以使用程序包管理控制台进行安装到使用的项目 打开 工具 ...
- MVC5手工添加System.Web.Optimization
VS2012web手工添辑一个空的mvC5的项目,添加EF6的支持,在别的项目里复制了母版页_Layout.cshtml过来,发现Styles.Render未引用,这个引用使用的命名空间是System ...
随机推荐
- 微信jsApI及微信分享对应在手机浏览器的调用总结。
摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...
- DX系列之TreeList
参考资料: DevXpress控件: 第三篇: 将 父子 关系进行到底
- MyBatis传入多个参数的问题
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展.深度学习一直被人们推崇为一种类似于人脑结构的人工智能算法,那为什么深度学习在语义分析领域仍然没有实质性的进展呢? ...
- Java Abstract Class & Interface
一. 抽象类 1. 抽象类:包含了一个抽象方法的类就是抽象类 2. 抽象方法:声明而未被实现的方法,用关键字abstract声明 3. 抽象类被子类继承,子类(如果不是抽象类)必须重写(overrid ...
- 码云以及git使用
码云的使用方法以及git的连用 创建公钥的方法 打开码云,点击个人资料---->SSH公钥---->点击怎样生成公钥 SSH Keys ssh keys可以让你在你的电脑和Git@OSC知 ...
- PHP错误以及异常处理
以前一直觉得php的异常处理没有什么,现在才发现这个还真是门学问,于是狠下心来好好研究了一下,写一篇文章,也作备忘吧. 1. php错误 无论是什么语言编程,都会有如下三种错误,当然php也不例外. ...
- vue2/vuex2的那点坑
说是坑,其实大部分是我们自己的过错! vuex官方demo在1.0可以运行,在2.0报错?此类问题,应该很常见吧? 还有顺溜的利用1.0搭建的webpack编译环境到了vue2.0突然失效了,报错了? ...
- BZOJ4318——OSU!
1.题意:一个序列,连续的一段1对得分具有贡献,那么问期望得分 2.分析:一道裸的期望dp,那么新加入一个1,对答案的贡献为 直接暴力算出期望的平方和期望,每次dp的时候更新一下就好了 #includ ...
- react+redux官方实例TODO从最简单的入门(6)-- 完结
通过实现了增-->删-->改-->查,对react结合redux的机制差不多已经了解,那么把剩下的功能一起完成吧 全选 1.声明状态,这个是全选状态 2.action约定 3.red ...