2010-08-18 80 views
0

它們存儲在哪裏?有沒有辦法確定他們何時被刪除?有沒有辦法讓它不被刪除,以提高性能?ASP.net編譯dll

另一個問題 - 在繁忙的宿主環境中,所有的dll可能有多大?假設您有1000箇中型網站?

回答

2

它們存儲在哪裏?

這取決於您是在部署之前還是在部署之後編譯它們。如果您在部署之前編譯它們,則會直接將它們部署到應用程序的/ bin文件夾中。這是我通常做的。

如果你讓asp.net在部署後編譯,有幾個地方最終可能會結束,這不是我通常關心的事情。只有在網站中的某些內容發生變化時纔會重新編譯它們,因此它們不會被刪除,只會被覆蓋。

編譯後的dll文件的大小通常與用於構建它的源文件的大小相當。

請注意,這些.net dll主要由IL組成,並且還沒有完全編譯的本機代碼。在實時編譯器啓動應用程序時(在asp.net中:當第一個http請求進入時),它們將被用於本機代碼的其餘部分。你可以使用像ngen這樣的工具來預編譯它們,但這通常不是最好的選擇。再次,這個最終代碼的位置不是我通常關心的事情。

+0

但我認爲,他們被刪除我的網站託管的地方。我的一個流量較低的網站在第一次打開時總是需要10-15秒才能加載。之後,一切都很正常。我認爲這表明該網站是由asp.net重新編譯的,或者它可能是其他的東西? – Tomasi 2010-08-18 03:32:43

+1

發生什麼事是框架正在啓動,並且即時編譯器正在將dll文件中的IL編譯爲本地代碼。此本地代碼通常只存在於內存中,如果您的應用程序閒置了足夠長時間,IIS將關閉它。有你的只記憶本機代碼。我所做的解決這個問題的方法是不經常使用的應用程序會改變IIS中的一些設置,以使它們的存活時間更長,所以它們不會首先關閉。但我不需要經常足夠記住如何找到這些設置:( – 2010-08-18 03:39:12

+0

感謝您的明確解釋,現在我明白了。 – Tomasi 2010-08-18 20:07:20