ASP.NET MVC5每个Razor Page在第一次加载时非常慢

时间:2014-07-29 01:04:33

标签: c# asp.net asp.net-mvc razor

这与第一次请求到达时的延迟体验不同,但这是第一次访问基于Razor的视图时遇到的延迟,可能需要一秒钟或者二。对该视图的所有后续请求都非常快。即使对于没有进行任何编程工作的简单视图(例如访问数据库等),也会发生这种情况。

我已经在配置文件中的system.web下的编译标签中确保了debug=false

我还通过Global.asax

删除了设置Razor作为唯一的视图引擎

可能导致这种延迟的原因是什么?这似乎是旧的asp.net'网站'在它转移到'web应用程序'之前遇到的问题,其中每个.aspx.cs代码隐藏都是在部署而不是在运行时编译。 Razor是否仍然受此影响?

3 个答案:

答案 0 :(得分:30)

问题是由Razor视图的解析和编译引起的。一旦编译了视图,它们就会很快执行。视图仅在第一次查看请求时进行解析和编译,或者自上次编译后视图已被修改。

您可以通过将视图作为发布过程的一部分进行预编译,在已部署的WebApp上解决此问题。请参阅下图,了解如何使用标准发布对话框在VS2012中执行此操作。

如果您愿意,可以选择可更新选项,但对于生产网站,我不推荐它。

enter image description here

答案 1 :(得分:4)

Webgrease。它会在首次加载时缩小生产js和css包,然后缓存它们。问题是,当缩小有错误时,它会尝试每次编译,运行那里的任何错误例程。 没有错误报告,发现这种情况的唯一方法是直接打开引用并查看如下内容:

Result

其中(在上述情况下)显示您已发布了不必要的.less或.sass文件 - 这通常是通配符捆绑的结果。 通配符捆绑将花费您比节省更多的时间。

答案 2 :(得分:0)

解析视图可能很慢。您是否尝试使用RazorGenerator编译视图?

在NuGet程序包管理器控制台中键入install-package RazorGenerator,或通过NuGet手动安装here