5

我分析了我的ASP.NET MVC应用程序,我看到了一个奇怪的函数调用。

你可以在图片上看到

在此处输入图像描述

总是在 mvc 渲染布局时我们调用system.web.optimization.scripts.renderwhich invoke JsMinify.Processand Minifier.MinifyJavaScript,但我认为应该在启动应用程序上进行一次缩小。

我对吗?

也许我必须设置一些优化它的设置?

条件:

  • 本地主机
  • 发布
  • BundleTable.EnableOptimizations = true;
4

1 回答 1

3

好问题!

直觉上,你是对的,资产的缩小应该在应用程序Startup上执行。您假设资产以相同方式交付给所有浏览器。但微软认为大部分 JS 和 CSS 是特定于浏览器的。

如果您在ASP.NET 4.5 Bundling and Minification上查看 asp.net 站点的参考资料,它们会明确指出:

ASP.NET 4.5 中的捆绑和缩小是在运行时执行的,因此该进程可以识别用户代理(例如 IE、Mozilla 等),从而通过针对用户浏览器来改进压缩(例如,删除那些当请求来自 IE 时是 Mozilla 特定的)。


缓存呢?

捆绑并不像你想象的那样迟钝。如果您查看MVC 4 Bundling and Minification参考,他们指出:

捆绑缓存

捆绑包在捆绑包创建后一年设置 HTTP Expires 标头。如果您导航到以前查看过的页面,Fiddler 会显示 IE 不会对捆绑包发出条件请求,也就是说,IE 没有针对捆绑包的 HTTP GET 请求,也没有来自服务器的 HTTP 304 响应。

这比您需要的信息要多得多,但消息是,JSMinify 会检查相关的缓存缩小资产。

当您进一步考虑到我们已经使用了资产的缩小版本(例如 jquery.min.js、jquery-ui.min.js)时,您会意识到 .Net 缩小是一个补充过程。

为什么所有类型的缩小都必须发生

于 2014-06-21T12:50:34.437 回答