每當(dāng)瀏覽器向IIS發(fā)送一個(gè)頁面請(qǐng)求的時(shí)候,相應(yīng)的網(wǎng)頁就會(huì)被編譯成DLL文件,然后由JIT來運(yùn)行這個(gè)DLL文件,最后將運(yùn)行結(jié)果發(fā)送給客戶端。一旦網(wǎng)頁發(fā)送了變化,下次再請(qǐng)求頁面的話,網(wǎng)頁又會(huì)被重新被編譯成DLL文件,再由JIT來運(yùn)行。為了防止發(fā)生文件重名,生成的DLL文件采用了隨機(jī)命名。
當(dāng)向IIS發(fā)送請(qǐng)求時(shí),其內(nèi)部執(zhí)行過程如下:
以下是運(yùn)行時(shí)的流程圖:
由上述可知,在服務(wù)器沒有清理掉內(nèi)存中的機(jī)器代碼時(shí),訪問同一個(gè)頁面,服務(wù)器會(huì)直接執(zhí)行緩存中的機(jī)器代碼,運(yùn)行速度是相當(dāng)快的。所以aspx頁面在第一次被打開式會(huì)比較慢,因?yàn)橐壬蒁LL文件再編譯成機(jī)器代碼;以后再次執(zhí)行時(shí)就會(huì)比較快。除非修改了代碼,否則沒有必要重新生成DLL,并且對(duì)于第一次運(yùn)行比較慢的情況,可以通過預(yù)編譯來解決。
ps:上述過程可以在安裝IIS后,把a(bǔ)spx文件放在Inetpub/wwwroot目錄中,并通過在瀏覽器輸入http://localhost/+"對(duì)應(yīng)aspx文件名",返回結(jié)果后,可以在C:/Windows/Microsoft.NET/Framework64/v2.0.50727/Temporary ASP.NET Files的臨時(shí)文件里發(fā)現(xiàn)生成root的文件夾,在這個(gè)文件夾里會(huì)生成一個(gè)隨機(jī)命名的dll文件,如下圖所示:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注