即時先行編譯(in-place precompilation)

我們都知道,在ASP.NET中,第一次被瀏覽的網頁會比較慢才會做出反應,原因是第一次被瀏覽的網頁需要complier,第二次就不用再complier,但如果我們想一開始就把全部的網頁都complier好,那可以使用即時先行編譯(in-place precomplation)技術。

如果網站剛上線,或Server維護重開機,可以使用這個方便的小工具,幫我們先把全部的網頁「點一遍」,也因為每一頁都被點過了,也代表每一頁都被complier過了,所以第一位進來的仁兄,不用等那麼久。

通常使用下面範例二即可。

C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_compiler.exe /?

先行編譯 ASP.NET 應用程式的公用程式
Copyright (C) Microsoft Corporation. All rights reserved.

使用方式:
aspnet_compiler [-?] [-m metabasePath | -v virtualPath [-p physicalDir]]
                [[-u] [-f] [-d] [-fixednames] targetDir] [-c]
                [[-keyfile file | -keycontainer container]
                     [-aptca] [-delaySign]]
                [-errorstack]

-?            列印這段說明文字。
-m            應用程式的完整 IIS Metabase 路徑。這個參數不能和 -v 或 -p 參數結合。
-v            要編譯的應用程式的虛擬路徑 (例如 "/MyApp")。如果已指定 -p,就會使用實體路徑尋找應用程式,否則會使用 IIS Me
tabase,並假設應用程式位於預設網站 (在
              "/LM/W3SVC/1/Root" 下)。這個參數不能和 -m 參數結合。
-p            要編譯的應用程式的實體路徑。如果遺漏 -p,就會使用 IIS Metabase 尋找應用程式。這個參數必須和 -v 結合。
-u            如果已指定這個路徑,就可以更新先行編譯的應用程式。
-f            如果目標目錄已存在則覆寫。現有的內容將遺失。
-d            如果已指定,會在編譯時發出偵錯資訊。
targetDir     編譯應用程式的實體路徑。如果未指定這個路徑,則會就地先行編譯應用程式。
-c            如果已指定,先行編譯的應用程式便會完整重建。任何之前編譯過的元件都會重新編譯。已指定 targetDir 時,永遠啟
用此選項。
-keyfile      強式名稱金鑰檔的實體路徑。
-keycontainer 指定強式名稱金鑰容器。
-aptca        如果已指定,強式名稱的組件將會允許部分信任的呼叫端。
-delaysign    如果已指定,建立時組件不會完整簽署。
-fixednames   如果已指定,編譯的組件將會獲得固定的名稱。
-nologo       隱藏編譯器著作權訊息。
-errorstack   顯示可協助進行特定條件偵錯的額外偵錯資訊。

範例:

下列兩個命令功能相同,而且都倚賴 IIS Metabase。編譯完成的應用程式會部署到 c:\MyTarget:

    aspnet_compiler -m /LM/W3SVC/1/Root/MyApp c:\MyTarget
    aspnet_compiler -v /MyApp c:\MyTarget



下列命令會就地編譯應用程式 /MyApp。如此一來,當 HTTP 要求傳送至這個應用程式時,就不再需要進行編譯:

    aspnet_compiler -v /MyApp



下列命令「不」倚賴 IIS Metabase,因為它會明確指定應用程式的實體來源目錄:

    aspnet_compiler -v /MyApp -p c:\myapp c:\MyTarget

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。