我即将结束一个需要加快页面速度的项目。 要做到这一点,我一直在使用谷歌的页面速度见解(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;)的方法,但允许我添加异步属性?
非常感谢。
答案 0 :(得分:1)
@Scripts.RenderFormat
适用于javascript包。
当您尝试使用@Scripts.RenderFormat
呈现css样式时,会出现编译器错误。
使用@Styles.Render("~/bundles/mybundle")
async
添加 @Scripts.RenderFormat
属性,但仅限于javascript。