如果有大型 Web 应用程序,可考虑执行预批编译
生活随笔
收集整理的這篇文章主要介紹了
如果有大型 Web 应用程序,可考虑执行预批编译
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
每當(dāng)發(fā)生對目錄的第一次請求時都會執(zhí)行批編譯。如果目錄中的頁面沒有被分析并編譯,此功能會成批分析并編譯目錄中的所有頁面,以便更好地利用磁盤和內(nèi)存。如果這需要很長時間,則將快速分析并編譯單個頁面,以便請求能被處理。此功能帶給 ASP.NET 性能上的好處,因為它將許多頁面編譯為單個程序集。從已加載的程序集訪問一頁比每頁加載新的程序集要快。
批編譯的缺點在于:如果服務(wù)器接收到許多對尚未編譯的頁面的請求,那么當(dāng) Web 服務(wù)器分析并編譯它們時,性能可能較差。為解決這個問題,可以執(zhí)行預(yù)批編譯。為此,只需在應(yīng)用程序激活之前向它請求一個頁面,無論哪頁均可。然后,當(dāng)用戶首次訪問您的站點時,頁面及其程序集將已被編譯。
批編譯的缺點在于:如果服務(wù)器接收到許多對尚未編譯的頁面的請求,那么當(dāng) Web 服務(wù)器分析并編譯它們時,性能可能較差。為解決這個問題,可以執(zhí)行預(yù)批編譯。為此,只需在應(yīng)用程序激活之前向它請求一個頁面,無論哪頁均可。然后,當(dāng)用戶首次訪問您的站點時,頁面及其程序集將已被編譯。
沒有簡單的機制可以知道批編譯何時發(fā)生。需一直等到 CPU 空閑或者沒有更多的編譯器進(jìn)程(例如 csc.exe(C# 編譯器)或 vbc.exe(Visual Basic 編譯器))啟動。
還應(yīng)盡量避免更改應(yīng)用程序的 /bin 目錄中的程序集。更改頁面會導(dǎo)致重新分析和編譯該頁,而替換 /bin 目錄中的程序集則會導(dǎo)致完全重新批編譯該目錄。
在包含許多頁面的大規(guī)模站點上,更好的辦法可能是根據(jù)計劃替換頁面或程序集的頻繁程度來設(shè)計不同的目錄結(jié)構(gòu)。不常更改的頁面可以存儲在同一目錄中并在特定的時間進(jìn)行預(yù)批編譯。經(jīng)常更改的頁面應(yīng)在它們自己的目錄中(每個目錄最多幾百頁)以便快速編譯。
Web 應(yīng)用程序可以包含許多子目錄。批編譯發(fā)生在目錄級,而不是應(yīng)用程序級。
總結(jié)
以上是生活随笔為你收集整理的如果有大型 Web 应用程序,可考虑执行预批编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要依赖代码中的异常
- 下一篇: 适当地使用公共语言运行库的垃圾回收器和自