asp.net-mvc – 为什么Scripts.Render调用JsMinify.Process?

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

你可以在图像上看到它

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

我对吗?

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

条件:

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

最佳答案 好问题!

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

如果你在ASP.NET 4.5 Bundling and Minification上查看asp.net站点的参考资料,他们会特别指出:

Bundling and minification in ASP.NET 4.5 is performed at runtime, so
that the process can identify the user agent (for example IE, Mozilla,
etc) , and thus, improve the compression by targeting the user browser
(for instance, removing stuff that is Mozilla specific when the
request comes from IE).

缓存怎么样?

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

Bundle Caching

Bundles set the HTTP Expires Header one year from when the bundle is
created. If you navigate to a previously viewed page, Fiddler shows IE
does not make a conditional request for the bundle, that is, there are
no HTTP GET requests from IE for the bundles and no HTTP 304 responses
from the server.

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

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

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

点赞