重启后,每个页面的MVC应用程序都很慢

时间:2015-09-04 14:02:53

标签: asp.net asp.net-mvc performance asp.net-mvc-4 iis-7.5

除了在IIS上运行的ASP.NET应用程序中出现的臭名昭着的慢启动问题之外,我们还遇到了另一个问题。

在新应用程序启动后(例如iisreset),第一个请求需要一些时间。但是在当前的应用程序中,对于尚未加载的页面的每个其他请求在第一次打击时大约需要10-12秒!

页面加载后,对同一资源的所有其他请求再次快速(通常为80-130毫秒)。对于来自其他客户端计算机的第一次加载也是如此,因此这不是客户端缓存问题。

例如:

Machine | Request           | Duration |
A       | GET /             | 43000 ms | (wakeup)
A       | GET /             |    90 ms |
B       | GET /             |    90 ms |
A       | GET /registration | 12000 ms |
A       | GET /registration |   110 ms |
A       | GET /registration |   110 ms |
A       | GET /registration |   110 ms |
A       | GET /foobar       | 11000 ms |
A       | GET /foobar       |    85 ms |
B       | GET /baz          | 10000 ms |
A       | GET /baz          |   100 ms |

有趣的是,当我们在DEV机器上运行应用程序时,这不会发生(debug = true等)。只有当我们发布网站(debug = false,precompile等)时才会出现这种情况。

所有静态资源都捆绑并正确缓存,并且没有一个请求可能需要超过1秒的时间。应用程序池和网站配置为自动启动并运行forver。

我非常感谢任何提示。

1 个答案:

答案 0 :(得分:0)

您可以尝试预编译Razor视图。

您可以找到一个示例here,尽管作者将其作为在项目编译时在视图中查找语法错误的方法。

'Can Razor views be compiled?' question的答案中也可以找到更多材料。