2016-06-07 210 views
11

当您在MVC6应用程序上运行dotnet run时,首次请求需要很长时间,但显然它工作正常。我试图在谷歌找到答案,但这是不可能的,因为我得到的是关于IIS的文章,我根本没有使用它。事实上,我在Ubuntu上运行代码。是否可以预热应用程序?

是否可以预热dotnet run以便第一次请求的速度与第二次请求一样快?

+4

如何在重新启动之后立即首先请求自己,并使用curl? – Evk

+0

我目前的部署脚本实际上是这样做的,但它不是我想要的。 – sed

+1

使用dotnet运行时,您的应用程序运行缓慢的原因有两个 - 1)应用程序编译2)查看编译。 'dotnet run'总是检查应用程序是否发生了变化,如果发生了变化,它会重新编译它(默认情况下为每个目标框架)。如果这是为了在生产环境中运行应用程序,不要使用dotnet运行,而是发布应用程序并直接运行它。如果这是在开发过程中,确保您只编译运行该应用程序的框架。视图在运行时编译。预编译视图可能是可能的,但我不是100%确定的。 – Pawel

回答

1

几点建议:

  1. 使用发布版本,使代码都是为生产而优化,而不是调试(dotnet run --configuration Release
  2. 自己发起的第一个连接,从你的客户,因此以后的所有请求都“暖”
  3. 编译使用--native标志,那么从性能优化主机的结果,以进一步造福

最后(并且这一点纯粹是推测),可能会考虑在生产Web服务器主机中运行已发布的Web站点(例如, Apache或IIS)而不是来自dotnet cli。这可能提供性能增强功能,但肯定会提供CLI中不存在的“升温”功能(我知道IIS具有Always-On选项)。

+0

如果我在Apache或Nginx中运行它,它将只是一个反向代理,因此它不会与CLI有任何不同。或者.NET已经有了cgi实现? – sed

+0

正确。更多情况下,这些服务器功能更丰富,就像iis始终处于模式一样。此外,您可以运行一个服务器场,其中包含多个代理的实例,然后单独升级它们,并且只在温暖时启用它们。 – tommed

相关问题