ASP.NET網站發布的時候需要預編譯.這樣不但能解決首次速度慢的問題,還能把cshtml的內容編譯.這樣別人就看不到我們VIEW的代碼了.那么打開VS.
發布的時候把"在發布期間預編譯"打鈎,點擊后面的設置取消選擇"允許更新預編譯站點".這樣編譯出來的網站view被編譯成.compiled文件.並且根目錄下多了一個PrecompiledApp.config文件.
部署到服務器上之后,問題依舊
那么繼續谷歌百度一下,看到另一個結局反感是優化IIS.這也是上面要介紹部署環境的原因.因為IIS7.5和IIS8有個很大的區別關於性能.如果部署在IIS8上的話,只需要簡單的設置即可.下面是設置方法:
IIS8設置
應用程序池-高級設置-啟動模式:AlwaysRunning
應用程序池-高級設置-進程模型-閑置超時:1740 (分鍾)
應用程序-高級設置-常規-預加載已啟用:True
這樣就可以解決問題了.這樣設置了過后一天網站signaR就失效了,直接503錯誤。網站有些圖片也會503!
但是在IIS7.5上並沒有這些選項,需要安裝一個模塊:Application Initialization Module for IIS 7.5
下載安裝略過不提.主要記錄一下配置方法.
打開服務器上的ApplicationHost.config文件.這個文件在IIS的安裝目錄Config下.
添加如下內容(但是似乎不添加也行)
<
globalModules
>
<
add
name
=
"ApplicationInitializationModule"
image
=
"%windir%\System32\inetsrv\warmup.dll"
/>
</
globalModules
>
|
然后設置網站應用程序和和對應的應用程序池
<
system.applicationHost
>
<
applicationPools
>
<
add
name
=
"West Wind West Wind Web Connection"
autoStart
=
"true"
startMode
=
"AlwaysRunning"
managedRuntimeVersion
=
"v4.0"
managedPipelineMode
=
"Integrated"
>
<
processModel
identityType
=
"LocalSystem"
setProfileEnvironment
=
"true"
/>
</
add
>
</
applicationPools
>
<
sites
>
<
site
name
=
"Default Web Site"
id
=
"1"
>
<
application
path
=
"/MPress.Workflow.WebQueueMessageManager"
applicationPool
=
"West Wind West Wind Web Connection"
preloadEnabled
=
"true"
>
<
virtualDirectory
path
=
"/"
physicalPath
=
"C:\Clients\…"
/>
</
application
>
</
site
>
</
sites
>
</
system.applicationHost
>
|
關鍵在於應用程序池設置的autoStart="true" startMode="AlwaysRunning" 這兩個的意思是自動自動和啟動模式.
網站應用程序設置的preloadEnabled="true"
這樣設置完成之后網站已經基本可以保證秒開了,基本解決了第一次打開速度很慢的問題.當然還遺留了一個EF首次加載緩慢的問題,額這還不知道怎么解決.似乎是沒辦法解決的.