2016-06-07 189 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

相關問題