程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP中處置#include

ASP中處置#include

編輯:關於ASP編程

    ASP中處理#include

    ASP中處理#include

    在ASP中處理#include 文件與用編譯高級編程語言,如C/C++處理包含文件,這兩種方法之間有兩個主要區別。 
    第一,ASP不從最終形成的ASP文件中移走那些未涉及到的信息。這是因為ASP獨立於腳本引擎,不過多地進行代碼 
    分析。大體說來,如果遇到了ASP文件的基本語法請求,信息就被緩存(假定緩沖器是打開的)並被發送到適當 
    的腳本引擎,進行進一步的分解、標記及執行。


    除了這個“死碼”問題,ASP包含文件與編譯語言之間的另一個區別在於:每個ASP文件都可以被看作它自己 
    的程序。只要一個頁面不包含另一個,在ASP的意義上看來它們就沒有關系,盡管二者對整個站點的運行都很 
    關鍵。因此,被兩個不同頁面所共享的一個#include 文件必須要被兩個文件都完全包含。從本質上說,ASP不具 
    備許多高級語言所具備的連接器的優勢,連接器可以用來避免包含文件中代碼和數據的冗余。


    如果把我所概括的ASP包含文件的問題組合起來,結論就是:它對一個大型站點的內存將是破壞性的。想象 
    一下這種情況:一個包含文件中包含了可能要用到的所有共享程序。按照這種設計,導致的結果是所有的ASP頁 
    都必須包含這一關鍵的文件。如果EverythingButTheKitchenSink.inc 經過分解之後與ASP文件的平均長度相同, 
    那麼被ASP分配並為緩存的ASP文件使用的內存中的一半都充滿了本來多余沒用的信息。

    813


    調用NT Task Manager/Processes 可以看到正被站點所使用著的內存,並觀察一下多少內存是由mtx.exe 
    (如果站點被設置成獨立的程序在IIS4上運行),dllhost.exe (如果站點被設置成獨立的程序在IIS5上運行), 
    或是inetinfo.exe (如果不是獨立的,見下面的圖)這些程序所使用。想要掌握內存增加得有多快,一個很好的 
    測試方法是啟動IIS後調用一個簡單的頁面來看看內存的大小。(看內存之前要調用一個ASP文件,因為在處理第 
    一個ASP文件時要建立一些普通的通用文件)。現在在你的站點上使用其它ASP文件,並監控每一個被使用的ASP文 
    件對內存的作用。

     

    比如說我創建了ASP文件。第一個文件RunFirst.asp,是一個小文件,在觀察內存之前初始化ASP資源。另外 
    兩個文件除了它們所要使用的#include 文件信息不同以外,是完全一樣的。將這些文件復制到你的wwwroot目錄下, 
    然後按順序運行RunFirst.asp, HelloWorld1.asp和 HelloWorld2.asp,執行HelloWorld1.asp和HelloWorld2.asp 
    之後觀察內存,你會發現後者使用了更多的內存。這是因為它使用的#include 文件中有一個很大的未使用的程序, 
    BigAndUnreferenced, 它對頁面的運行結果沒有任何作用,但卻占據了400K的內存。在Windows 2000 Server 
    w/ IIS5 上依次進行下列步驟得到的結果是:

    運行RunFirst.asp 後內存6,104K 
    運行HelloWorld1.asp後內存 6,124K 
    運行HelloWorld2.asp後內存 6,544K

    僅僅按照這個順序沒有什麼明顯的意義,顛倒裝載順序之後的結果是:

    運行 RunFirst.asp 後內存6,096K 
    運行 HelloWorld2.asp後內存 6,536K 
    運行 HelloWorld1.asp 後內存6,540K

    請注意開始和結束的內存數不完全一致,因為內存管理器根據最近的請求大塊地分配內存。但是相對而言, 
    最終的輪廓總是HelloWorld2.asp 占據大塊的內存份額。本文結尾處可以下載這些簡短的代碼。浏覽以下這些 
    代碼,但要分清內存的不同:

    RunFirst.asp 是這樣的:

    < %@ LANGUAGE="VBSCRIPT" % > 
    < HTML > 
    < HEAD >< TITLE >Seed Page to load general ASP resources< /TITLE >< HEAD > 
    < BODY > 
    < % 
    Response.Write "Seed Page Loaded" 
    % > 
    < /BODY > 
    < /HTML >

    HelloWorld1.asp 是這樣的:

    < %@ LANGUAGE="VBSCRIPT" % > 
    < !--#include virtual ="/HelloWorld1.inc"-- > 
    < HTML > 
    < HEAD >< TITLE >Hello World using little memory< /TITLE >< HEAD > 
    < BODY > 
    < % 
    SayHello 
    % > 
    < /BODY > 
    < /HTML >


    HelloWorld1.inc代碼是:

    < % 
    Sub SayHello 
    Response.Write "Hello World 1" 
    End Sub 
    % >


    HelloWorld2.asp代碼是:

    < %@ LANGUAGE="VBSCRIPT" % > 
    < !--#include virtual ="/HelloWorld2.inc"-- > 
    < HTML > 
    < HEAD >< TITLE >Hello World using a lot of memory< /TITLE >< HEAD > 
    < BODY > 
    < % 
    SayHello 
    % > 
    < /BODY > 
    < /HTML >

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved