Windows-Server-2008-R2
AppPool Recycle 後在單個 IIS 網站下重新載入多個應用程序的簡單方法?
我不知道從哪裡開始,即使我的想法是正確的。希望這裡有人能告訴我該怎麼做,或者至少給我一個開始旅行的方向。
我在一個包含多個 MVC3 和 Coldfusion 應用程序的 Intranet 網站上工作。我已將 AppPool 設置為每天凌晨 2:00 回收。現在,我想創建一個計劃任務來重新載入該 IIS 網站下包含的每個應用程序,這樣當第一個使用者早上進來時,他們不必等待 30 秒到 2 分鐘來將他們的應用程序重新載入到IIS 應用程序池。
有沒有容易做到這一點?在我看來,我唯一的選擇是:
- 編寫一個 bash 腳本,手動插入每個網站進行載入
- 編寫一個程序,試圖找到每個應用程序並載入它們
現在,如果這些是我唯一的選擇,是否有可以利用的 .NET 庫讓我輕鬆找到 IIS 下的 MVC3 應用程序?
使用應用程序初始化模組來做到這一點: http ://www.iis.net/download/ApplicationInitialization
這個模組有一個舊版本,但這是新重寫的版本。它仍在 CTP 中,但看起來相當穩定。
此外,此模組似乎預設包含在 Server 2012 和 IIS8 中
我們通常會創建一個計劃任務,每隔幾分鐘執行一次 wget 來執行初始載入。這可以從任何電腦上執行。IIS 7 有一個“熱身”功能,但我真的不明白它比使用 wget 更簡單。
wget.exe --quiet --secure-protocol=SSLv3 --no-check-certificate sitename.domainname.com
另請注意,如果您的網站沒有預編譯,使用者仍然會為每個尚未編譯的頁面產生延遲。最好的辦法是在建構過程中使用 aspnet_compiler.exe 為您執行此操作。
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe" -f ^ -v "/" -p "%~dp0..\..\SourceWebSiteFolder" ^ -d -fixednames "%~dp0..\..\PublishedWebSiteFolder"