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

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

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

我还通过Global.asax删除了设置Razor作为唯一的视图引擎

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

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

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

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

在此处输入图像描述

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

 /* Minification failed. Returning unminified contents. (69,1): run-time error CSS1019: Unexpected token, found '@import' (69,9): run-time error CSS1019: Unexpected token, found '"variables.less"' (70,1): run-time error CSS1019: Unexpected token, found '@import' 

哪个(在上面的例子中)显示你发布了不必要的.less或.sass文件 – 这通常是通配符捆绑的结果。 通配符捆绑将花费您比节省更多的时间。

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

在NuGet包管理器控制台中键入install-package RazorGenerator ,或在此处通过NuGet手动安装它。