asp.net-mvc-4 - .Net MVC 添加异步到包

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

我即将结束一个需要加快页面速度的项目。 为此,我一直在使用 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/

相关文章:

javascript - 渲染对象实例中的颜色不正确,我完全不知道整个该死的世界为什么

c# - 在纯asp.net中,不是mvc3+,通过路由调用controller的方法

java - 单线程异步处理

opengl - 我可以使用 OpenGL 进行离屏渲染吗?

internet-explorer - Firefox 和 IE 对同一图像的渲染方式不同!

c# - 如何在 .net 3.5 中获得 Task<T> 的等价物?

c# - cshtml 中的百分比标签

c# - 注销并重定向到不同区域的主页

c# - Jquery Ajax 发布后局部 View 刷新

javascript - 无法填充数组并返回