最近项目中用到了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. 华硕win10文档类文件点击右键时会闪一下,没法用右键打开文件

    华硕的win10系统,把系统自带的福昕软件Foxit PhantomPDF卸载了就好了

  2. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

    适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...

  3. sql杀死进程

    查询SQL所有的链接  并可以查看连接当前正在做什么操作..使用的什么语句.. SELECT spid, blocked, DB_NAME(sp.dbid) AS DBName, program_na ...

  4. C# 开源框架

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  5. Android之分页加载数据

    基本的原理和我的上一篇随笔“Android之下拉刷新ListView”差不多,代码里面有注释,这里就不废话了,直接上代码. 自定义的分页显示ListView——PagedListView.java代码 ...

  6. json-c与树

    json是一种轻量级的数据交换格式,因为其灵巧使得其在应用层开发以及接口层开发使用的十分广泛,最常用的莫过于协议交流使用json数据,比xml轻巧,又比二进制数据有规则.无论是各大公司的开放平台或者是 ...

  7. GOPATH 使用总结

    GOPATH 环境变量用于指定这样一些目录:除 $GOROOT 之外的包含 Go 项目源代码和二进制文件的目录.go install 和 go 工具会用到 GOPATH:作为编译后二进制的存放目的地 ...

  8. Best Time to Buy and Sell Stock1,2,3,4

    找到最低值和最高值 int maxProfit(vector<int>& prices) { ); ; ]; ;i<prices.size();i++) { profit=m ...

  9. Repeater、地址栏传值、Response--2016年12月30日

    Repeater  Repeater支持以下5种模板       ● ItemTemplate : 对每一个数据项进行格式设置 [Formats each item from the data sou ...

  10. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...