为什么Scripts.Render会调用JsMinify.Process?

时间:2014-06-18 08:36:50

标签: asp.net-mvc optimization asp.net-mvc-5 bundle webgrease

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

你可以在图像上看到它

enter image description here

总是在mvc渲染布局时,我们调用system.web.optimization.scripts.render来调用JsMinify.ProcessMinifier.MinifyJavaScript,但我认为缩小应该是启动应用程序的一次。

我是对的吗?

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

条件:

  • localhost
  • 发布
  • BundleTable.EnableOptimizations = true;

1 个答案:

答案 0 :(得分:2)

很棒的问题!

直观地说,你是对的,资产的缩小应该在应用 Startup 上进行。您假设资产的交付方式与所有浏览器相同。但微软认为,JS和CSS的大部分都是浏览器特定的。

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

  

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


缓存怎么样?

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

  

捆绑缓存

     

Bundles将捆绑包设置为从捆绑包开始的一年   创建。如果您导航到以前查看过的页面,Fiddler会显示IE   没有对bundle发出条件请求,也就是说   没有来自IE的HTTP GET请求,而没有HTTP 304响应   来自服务器。

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

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

为什么必须进行所有类型的缩小