asp.net - MVC 应用程序重启后每个页面都很慢

标签 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 秒。应用程序池和网站配置为自动启动并永久运行。

我将不胜感激任何提示。

最佳答案

您可以尝试预编译 Razor View 。

你可以找到一个例子 here尽管作者将其作为在项目编译时在 View 中查找语法错误的一种方法。

更多 Material 也可以在 'Can Razor views be compiled?' question 的答案中找到.

关于asp.net - MVC 应用程序重启后每个页面都很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400067/

相关文章:

asp.net - 使用 ClientId 和 ClientSecret 进行 Web API 授权

asp.net - 将即时消息集成到 ASP.NET 应用程序中

c# - 以下方法或属性之间的调用不明确(错误??)

java - 安卓 fragment : fragments inside a Frame or other layouts?

python - 在循环中使用 SetStringItem 时,Wxpython textctrl 缓慢

c# - 如何使用 PHP 生成 ASP.NET 密码

asp.net - 通过向其添加 ASP.NET MVC 元素来改进/丰富 WebForms 应用程序的想法

c# - 操作 链接到 "lose"参数

c# - Entity Framework 如何识别我的 View 模型并绑定(bind)到我的域模型的属性?

performance - 如何分析 Oracle 存储过程的端到端性能