重新启动后,MVC 应用程序对于每个页面都很慢

Posted

技术标签:

【中文标题】重新启动后,MVC 应用程序对于每个页面都很慢【英文标题】:MVC application is slow for every page after restart 【发布时间】:2015-11-30 17:32:30 【问题描述】:

除了臭名昭著的慢启动问题,它发生在 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、预编译等)时才会出现这种行为。

所有静态资源都被正确地捆绑和缓存,没有一个请求可能真正花费超过 1 秒。应用程序池和网站配置为自动启动并永久运行。

我将不胜感激任何提示。

【问题讨论】:

您找到解决方案了吗?我正在拔头发(比喻)。 不。迄今为止最好的解决方案:启动后卷曲所有 URL。 :// 【参考方案1】:

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

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

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

【讨论】:

以上是关于重新启动后,MVC 应用程序对于每个页面都很慢的主要内容,如果未能解决你的问题,请参考以下文章

托管在 Azure 上的点网 mvc 应用程序突然一次又一次地重定向到登录页面,直到重新启动

form表单中控件较多,加载完成后切换页面都很慢的解决方法

MVC4:服务器重新启动后,无法发布 ajax 内部服务器错误 500

Spring Security、Spring MVC 和登录会话

重新启动应用程序后tableview不显示tableview中的所有数据

MVC5中EF6 Code First启动慢及间隙变慢的一些优化处理