加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 为什么MVC4捆绑和缩小使我的文件更大?

发布时间:2020-12-15 19:26:46 所属栏目:asp.Net 来源:网络整理
导读:我正在MVC4中实现捆绑和缩小支持,似乎它使我的 javascript文件比未捆绑/分类更大.我正在使用nuget中的最新版本(预发行选项).我在RegisterBundles类中设置了以下软件包. bundles.Add(new ScriptBundle("~/bundles/baseJS").Include( "~/Scripts/jquery-1.7.1.
我正在MVC4中实现捆绑和缩小支持,似乎它使我的 javascript文件比未捆绑/分类更大.我正在使用nuget中的最新版本(预发行选项).我在RegisterBundles类中设置了以下软件包.
bundles.Add(new ScriptBundle("~/bundles/baseJS").Include(
                    "~/Scripts/jquery-1.7.1.js","~/Scripts/jquery.cookie.js","~/Scripts/jquery-ui-1.8.11.js","~/Scripts/bootstrap.js","~/Scripts/jquery.pjax.js","~/Scripts/kendo/2012.1.515/js/kendo.all.min.js","~/Scripts/jquery.jstree.js","~/Scripts/jquery.unobtrusive-ajax.js","~/Scripts/jquery.validate.js","~/Scripts/jquery.validate.unobtrusive.js","~/RIS.Scripts/PostJson.js"));

我正在使用它加载到我的_Layout.cshtml

@Scripts.Render("~/bundles/baseJS")

当我在调试模式下将这些脚本的Fiddler中收到的字节相加时,我得到以下内容

Name                        Size(bytes)
jquery                      98013
jquery cookie               1455
jquery ui                   124704
bootstrap                   52378
pjax                        8138
kendo.all                   219751
jstree                      55045
unobtrusive-ajax            2492
validate                    13323
validate-unobtrusive        5138
postjson                    634

Total                       581071

当我在我的生产服务器上运行它时,我从fiddler获取了整个js包的以下内容.

Bytes Received:  999,396

这里发生了什么?大多数文件在一定程度上被缩小,但是它的大小不应该是我的有效载荷的两倍.

额外细节-
当我从我的本地开发框(fiddler报告大小379kb)和服务器(fiddler报告大小为999kb)下载js文件并将它们放在kdiff中时,它们是二进制相同的.当我浏览Chrome的开发者工具网络标签时,本地服务器下载了379kb,但“Parser”值为975kb.这个解析器的值是多少可能是在我的服务器中没有设置一些IIS压缩设置,但是在我的本地IIS服务器上?我注意到的唯一的区别是,我在我的机器上运行的IIS Express是8.0,服务器是IIS 7.5.

解决方法

很可能你在这里看到的是一些来自FileExtensionReplacementList的调试/发布“魔术”.

我们以jQuery为例.通常在您的脚本文件夹中,您将看到每个文件的两个副本,即jquery-1.6.2.js和jquery-1.6.2.min.js.

默认情况下,当debug = false时,优化将使用min.js版本,并且在debug = true时使用常规jquery-1.6.2.js,因为通常会使调试更容易(捆绑和捆绑不进行捆绑).

此文件选择“魔术”通过BundleCollection上的FileExtensionReplacementList进行控制.

在下一个版本(RTM)中,在这个列表中会有更多的粒度,因为开发人员通常希望在这些列表中使用这些时间,即

list.Add("min",OptimizationMode.WhenEnabled);
list.Add("debug",OptimizationMode.WhenDisabled);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读