我描述了我的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缩小是一个补充过程.
为什么必须进行所有类型的缩小