我即将结束一个需要加快页面速度的项目。 为此,我一直在使用 Google 的页面速度洞察 (developers.google.com/speed/pagespeed/insights/)。
为了安抚谷歌诸神,我的最后一个任务是:
"Eliminate render-blocking JavaScript and CSS in above-the-fold content".
现在我明白了这一点,但让我困惑的是我正在 bundle 所有 JS/CSS 脚本,所以我得到了这个:
Optimize CSS Delivery of the following:
http://myProjectSite/…iNLCI_VXqeQlOY11sPqvHktFt9zdFUTOQ0zWZ7M1
顺便说一句,我已经内联了构建上面折叠内容的所有关键 CSS/JS。 (我可以删除我的 bundle ,上半部分(1800px 高)在没有它的情况下呈现完美,所以看起来不错)。
因此,为了让我的 CSS/JS 能够在不阻塞渲染的情况下进行解析,我想将 Async 属性附加到我的 <script/>
上。 ,但是当它通过 bundle 创建时,我不知道如何操作它的输出。
我看了这些:
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("~/jscript/base"),它可以工作。
但是使用它时,我收到一个错误:
Compiler Error Message: CS0117: 'System.Web.Optimization.Styles' does not contain a definition for 'RenderFormat'
我看到RenderFormat
我的项目无法识别,任何人都可以提供使用 @Scripts.Render("~/jscript/base") 的方法,但允许我添加 Async 属性吗?
非常感谢。
最佳答案
@Scripts.RenderFormat
适用于 javascript 包。
当您尝试使用 @Scripts.RenderFormat
渲染 css 样式时,会出现编译器错误。
要渲染样式,请使用@Styles.Render("~/bundles/mybundle")
async
属性可以使用 @Scripts.RenderFormat
添加,但仅适用于 javascript。
关于asp.net-mvc-4 - .Net MVC 添加异步到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30527818/