.Net MVC向bundle添加异步

时间:2015-05-29 10:58:57

标签: asp.net-mvc-4 asynchronous rendering bundle bundling-and-minification

我即将结束一个需要加快页面速度的项目。 要做到这一点,我一直在使用谷歌的页面速度见解(developers.google.com/speed/pagespeed/insights/).

为了安抚Google众神,我的最后一项任务是:

"Eliminate render-blocking JavaScript and CSS in above-the-fold content".

现在我理解了这一点,但最重要的是我把我的所有JS / CSS脚本捆绑在一起,所以我得到了这个:

Optimize CSS Delivery of the following:
http://myProjectSite/…iNLCI_VXqeQlOY11sPqvHktFt9zdFUTOQ0zWZ7M1

作为旁注,我已经内联了构建上述折叠内容的所有关键CSS / JS。 (我可以删除我的捆绑包,上半部分(1800px高)渲染完美,没有它,所以看起来很好)。

因此,为了允许我的CSS / JS解析而不进行渲染阻塞,我想将Async属性附加到我的<script/>,但我不知道如何操作它的输出,当它创建时束。

我看了看这些:

Async loading of javascript files using MVC4 Bundling and HTML5 async attribute

Why use @Scripts.Render("~/bundles/jquery")

Add an 'async' attribute to a JS include tag in asp.net web forms

这些链接建议使用与以下类似的格式:

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\"></script>", "~/bundles/mybundle")

所以我用上面的代码替换了我的@ Scripts.Render(&#34;〜/ jscript / base&#34;)。

但是使用它,我收到一个错误:

Compiler Error Message: CS0117: 'System.Web.Optimization.Styles' does not contain a definition for 'RenderFormat'

我发现我的项目无法识别RenderFormat,任何人都可以提供使用@ Scripts.Render(&#34;〜/ jscript / base&#34;)的方法,但允许我添加异步属性?

非常感谢。

1 个答案:

答案 0 :(得分:1)

@Scripts.RenderFormat适用于javascript包。

当您尝试使用@Scripts.RenderFormat呈现css样式时,会出现编译器错误。

使用@Styles.Render("~/bundles/mybundle")

渲染样式 可以使用async添加

@Scripts.RenderFormat属性,但仅限于javascript。