[IIS 8] 解決網站的第一次請求很慢 - 設定 Application Initialization (Preload)

有經驗的 .NET 開發人員大都會知道第一次瀏覽網站的時候都會很慢(第一個人是倒楣鬼),因為 ApplicationPool 必須要有請求才會活起來

為了閃掉這個問題,可透過腳本定期瀏覽不要讓人家發現這個問題

在 IIS 8 之後 (IIS 7 要另外處理),就可以直接設定 Application Initialization (Preload),讓 IIS 自己當第一個人瀏覽網站,以下分享我的作法

 

開發環境

  • Windows 2012 R2/IIS8.5
  • .NET Framework 4.6.1

 

設定應用程式集區

Managed 管線模式→整合式

進階設定→啟動模式→AlwayRunning

站台設定

進階設定→預先載入已啟用

應用程式集區"停止後再啟動或是"回收"才會載入預設頁面;站台重新啟動不會載入預設頁面
我的自動化部署腳本會更新 Web.Config,觸發站台重新啟動,程式集區不會回收,可以調用 msdeploy.exe 進行網站回收,參考以下:
https://forums.iis.net/t/1161700.aspx?Recycle+App+Pool+Using+MSDeploy

預設文件

這裡面的文件要排除驗證

專案設定

  • 專案型態是 Project 而非 WebSite

  • 網站第一次的請求會觸發 Global.asax 的 Application_Start 事件,可以在這裡寫個 Log 觀察

IIS 7 的設定

让IIS 7 如同IIS 8 第一次请求不变慢

 

若有謬誤,煩請告知,新手發帖請多包涵

2010~2015 C# 第四季