EF 在第一次使用時會根據資料庫產生 mapping views,這個動作很花時間,以下紀錄一下使用方式
2016-10-20
[EF] 解決網站的第一次請求很慢 - Pre-Generated Mapping Views
- 2062
- 0
- 解決網站的第一次請求很慢
EF 在第一次使用時會根據資料庫產生 mapping views,這個動作很花時間,以下紀錄一下使用方式
根據預設,在使用者首次要求資源時 (例如要求網站的頁面),會動態編譯 ASP.NET Web 網頁和程式碼檔。在頁面與程式碼檔案初次編譯之後,就會快取編譯過的資源。因此,後續對相同頁面的要求就會非常有效率。 出自:https://msdn.microsoft.com/zh-tw/library/bb398860(v=vs.110).aspx
根據預設,Web 應用程式專案中的程式碼檔可藉由使用 Microsoft Build Engine (MSBuild) 而先行編譯成單一組件。 ASP.NET Web 網頁 (.aspx)、使用者控制項 (.ascx) 及 MVC Razor 檢視 (.cshtml and .vbhtml) 則會由 ASP.NET 編譯器在伺服器上進行動態編譯。 您還可以選擇先行編譯網頁、使用者控制項及 Razor 檢視。 出自:https://msdn.microsoft.com/zh-tw/library/aa983464(v=vs.110).aspx
有經驗的 .NET 開發人員大都會知道第一次瀏覽網站的時候都會很慢(第一個人是倒楣鬼),因為 ApplicationPool 必須要有請求才會活起來
為了閃掉這個問題,可透過腳本定期瀏覽不要讓人家發現這個問題
在 IIS 8 之後 (IIS 7 要另外處理),就可以直接設定 Application Initialization (Preload),讓 IIS 自己當第一個人瀏覽網站,以下分享我的作法