2014-02-19 48 views

回答

5

「首發命中」的延遲是非常普遍的ASP.NET應用程序。有JIT編譯的開銷,並且可能不會初始化各種「池」(數據庫連接,線程等)。如果您有ASP.NET Web窗體應用程序,則每個.aspx頁面在首次訪問時編譯,而不是在服務器啓動時編譯。此外,使後續請求更快的各種緩存機制(服務器或客戶端)在第一次命中時不會被初始化。在第一次命中時,Application_Start中的任何代碼都將運行,設置路由表並執行其他初始化。

有可以做,以防止你的用戶看到此延遲各種各樣的事情。最簡單的方法是編寫某種自動化流程,在部署新版本後觸及每個頁面並運行它。當網站實際部署時,還有一些IIS模塊會在Application_Start之前運行代碼。 Search for "ASP.NET warmup"找到那些。

您也可能會遇到一個閒置一段時間後延遲,如果你的ASP.NET應用程序池被回收, - 這重置了一堆東西,並導致啓動代碼,再次對下一個請求運行。您可以通過設置一些在網站上經常ping一個頁面,這樣,如果應用程序池被回收,再次自動加熱,而不是對下一個實際用戶請求減輕這種影響。使用正常運行時間監視服務將適用於此,或Azure生態系統本身內的預定任務。

相關問題