2011-07-29 66 views
0

在頁面請求階段(頁面生命週期之前),ASP.NET如何確定頁面是否需要第一次被解析和編譯,或者2)由於標記更改(假設「允許此預編譯站點可更新」= true)或程序集更改而重新解析並重新編譯?我可以做出一些非常安全的假設,但是有誰知道ASP.NET究竟如何做出這些決定?ASP.NET頁面請求階段...

ASP.NET頁面生命週期: http://msdn.microsoft.com/en-us/library/ms178472.aspx

編輯:所以,「第一時間」被確定爲關閉ASP.NET網站上的第一個資源請求; soooooo,這不是一個頁面或資源(單數)需要被解析和編譯的問題,而是需要「第一次」解析和編譯,而ASP.NET解析和編譯所有第一次任何頁面或請求的資源。 「Reparse and recompile」以一種「懶惰」的方式出現:當對動態編譯文件進行更改時,會使該文件以前編譯的緩存版本無效;這會觸發它的重新編譯和所有受影響的資源。下一次需要代碼 - 根據所做的更改,所有文件的1-n可能需要重新編譯。

感謝@Mass爲link

+0

.. ..歡迎:-) –

+0

[緩存ASP.NET頁面](http://msdn.microsoft.com/en-us/library/06bh14hk%28v=vs.100%29.aspx) – AminM

回答

1

,你可以找到你需要在下面的鏈接中的所有答案:

在編制第一個請求

重新編譯就更改

編譯輸出

http://msdn.microsoft.com/en-us/library/ms366723.aspx

+0

我想我真的很期待內部的;換句話說,哈希用於檢查更改的資源對asp.net緩存以確定更改?是時間戳還是其他標準,還是這些的組合?無論如何,我會接受這個答案。謝謝。 – gangelo

1

關於第二點(「重新解析和重新編譯由於標記變化」):

有由HTTP運行時開始一個文件系統監視器。您可能想要使用反射器來探索HttpRuntime.StartMonitoringDirectoryRenamesAndBinDirectory()方法。

監測由FCNMode註冊表項設置下

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ ASP.NET(86) HKEY_LOCAL_MACHINE \ SOFTWARE影響\ Wow6432Node \微軟\ ASP.NET(64)

+0

很酷的豆類,這些都是我正在尋找的細節。 – gangelo