2017-09-27 32 views
5

爲了加快ASP.NET MVC應用程序的響應時間,我們希望在應用程序安裝完成後(或在應用程序池被回收後)「預熱」應用程序。應該從SQL Server數據庫中提取一些經常使用的查找數據,並將其存儲到.NET提供的全局對象System.Runtime.Caching.MemoryCache中。ASP.NET MVC - 應用程序預熱 - 兩種使用方法中的哪一種?

對於您有一個專用的虛擬機和專用的IIS爲您的ASP.NET應用程序的情況下,我首先將應用程序池設置爲「始終運行」 - 這是第1步。

鑑於這種情況,有兩種選擇我看到:基於System.Web.Hosting.IProcessHostPreloadClient接口

  1. 應用熱身描述in this blog post by Scott Gu。如果我理解正確的話,這個代碼運行時,應用程序池已啓動,並且第一請求被接受爲應用程序之前

  2. global.asax.cs使用Application_Start事件。如果我理解正確,這個事件被稱爲一次,當應用程序第一次啓動(安裝後會自動發生,因爲應用程序池被設置爲「Always Running」 - 對吧?)

所以 - 給定這個設置 - 這是「預熱」你的應用程序的首選方式?這兩種方法有什麼顯着差異?在採取一種方法時,我需要注意什麼?

感謝您的任何輸入,提示,警告或進一步的鏈接,更詳細地解釋這一點!

+0

您的應用程序是否預編譯?如果合併/未合併。我相信這會影響到你的「熱身」時間。在我看來,始終運行的開銷是整個應用程序都坐在內存中,永遠不會按需要釋放? – DaniDev

回答

2

簡短的回答,使用IProcessHostPreloadClient - 它會在啓動時立即運行。

Application_Start是有點用詞不當,它實際上觸發第一個請求。這意味着該網站可能會回收/重新啓動,並且可能處於閒置狀態,可能會變暖。

如果您的網站在IIS 7或以上,我不知道使用Application_Start的理由。

+0

下面是一個相關/相關問題:https://stackoverflow.com/questions/10623303/run-application-start-immediately-when-application-pool-restarts-in-iis – STW

相關問題