这与第一次请求到达时的延迟体验不同,但这是第一次访问基于Razor的视图时遇到的延迟,可能需要一秒钟或者二。对该视图的所有后续请求都非常快。即使对于没有进行任何编程工作的简单视图(例如访问数据库等),也会发生这种情况。
我已经在配置文件中的system.web下的编译标签中确保了debug=false
。
我还通过Global.asax
可能导致这种延迟的原因是什么?这似乎是旧的asp.net'网站'在它转移到'web应用程序'之前遇到的问题,其中每个.aspx.cs代码隐藏都是在部署而不是在运行时编译。 Razor是否仍然受此影响?
答案 0 :(得分:30)
问题是由Razor视图的解析和编译引起的。一旦编译了视图,它们就会很快执行。视图仅在第一次查看请求时进行解析和编译,或者自上次编译后视图已被修改。
您可以通过将视图作为发布过程的一部分进行预编译,在已部署的WebApp上解决此问题。请参阅下图,了解如何使用标准发布对话框在VS2012中执行此操作。
如果您愿意,可以选择可更新选项,但对于生产网站,我不推荐它。
答案 1 :(得分:4)
Webgrease。它会在首次加载时缩小生产js和css包,然后缓存它们。问题是,当缩小有错误时,它会尝试每次编译,运行那里的任何错误例程。 没有错误报告,发现这种情况的唯一方法是直接打开引用并查看如下内容:
Result
其中(在上述情况下)显示您已发布了不必要的.less或.sass文件 - 这通常是通配符捆绑的结果。 通配符捆绑将花费您比节省更多的时间。
答案 2 :(得分:0)
解析视图可能很慢。您是否尝试使用RazorGenerator
编译视图?
在NuGet程序包管理器控制台中键入install-package RazorGenerator
,或通过NuGet手动安装here。