ASP應用技巧15則(上)
發(fā)布時間:2008-08-04 閱讀數(shù): 次 來源:網(wǎng)樂原科技
*技巧1:給應用層文件使用GLOBAL.ASA
將文件載入GLOBAL.ASA中的一個應用層數(shù)組中,而不是通過使用ASP文件系統(tǒng)對象在頁面上讀取文件。
GLOBAL.ASA可用于指定事件腳本,也可用于聲明擁有session或應用程序范圍的對象。它不直接顯示給用戶,而是存儲應用層事件的信息和對象。然后通過頁面就可以指向存有數(shù)據(jù)的應用層數(shù)組。這就意味著每有一個服務器端請求就讀一次文件,不是每個用戶每頁讀一次。你可以運行一個獨立的ASP文件去刷新應用層數(shù)組的內(nèi)容,同時你也可以考慮使用dictionary對象(見技巧9)。
這個技巧可以大大加快你的系統(tǒng)速度。
那么將如何實現(xiàn)該技巧呢?
如果你是一個腳本編寫人員,必須使用文件系統(tǒng)對象讀取文件放入一個數(shù)組或一個dictionary對象中。然后在GLOBAL.ASA中讀取文件并且把數(shù)組(放有你讀取的文件內(nèi)容)或dictionary對象放到應用層聲明中。這樣就可讓用戶在數(shù)組或dictionary對象中存取信息,而不必每次通過一個ASP請求去提交信息。
但也許你會想“如果緩存中的內(nèi)容需要更新又該怎么辦呢?我敢打賭不會用到?!逼鋵嵅蝗弧H绻彺嬷械膬?nèi)容需要更新,你可以調(diào)用一個包含有可執(zhí)行應用程序鎖定命令腳本的僅管理員可存取的ASP文件,在數(shù)組或dictionary對象中更新緩存信息,最后執(zhí)行應用程序鎖定命令。
*技巧2:從產(chǎn)品源代碼中移去HTML注釋(IIS3.0適用)
不錯,難寫的肯定也難懂。開個玩笑,這不代表要你把所有的HTML注釋去掉(腳本注釋就挺好的),大范圍的HTML文本都能成批的拷貝到客戶端。這樣的話,你的腳本在IIS3.0上會運行得更快(在IIS4.0中,HTML注釋不再會導致執(zhí)行速度的降低)。
*技巧3:多個Response.write聲明
如果你是在代碼中的好幾個地方用<%=...%>格式書寫輸出結果,那么考慮一下把這些結果合到一塊,用一個Response.write語句寫出來。然后你再看看你的HTML代碼和vbscript腳本的組成。不要把HTML和vbscript腳本散布得太開,盡量寫成成塊的HTML和vbscript腳本。
*技巧4:使用<OBJECT>標志例示對象
如果你需要指向那些也許用不著的對象,那么就用<OBJECT>標志例示,而不是用Server.createobject.用Server.createobject將立刻生成該對象,如果你以后都用不著它的話,就等于浪費資源。
*技巧5:盡可能的使用本地(局部)變量
(以下的新技巧將取代較早前發(fā)布的“在一行內(nèi)定義變量”,其中包含有一些錯誤觀點):
局部變量是在子程序和函數(shù)中定義的(也就是常說局部范圍的變量),這些變量被編譯成數(shù)字指向并放入一張表中。這些局部變量的指向可以通過一次編譯完成。而全局變量則是在運行時被執(zhí)行的。這就意味著局部變量的存取要比全局變量快好幾倍。而且,多維全局變量是其中最慢的,當?shù)谝淮问褂靡粋€多維全局變量時,在新的對象產(chǎn)生之前,就要在整個對象模型中搜索一遍同名的對象。
以下是一個非常常見的例子:
Foo.bar.blah.baz = Foo.bar.blah.qaz(1)
If Foo.bar.blah.zaq = Foo.bar.blah.abc then
運行時產(chǎn)生如下結果:
1)變量Foo被定義為一個全局變量
2)變量bar被定義為Foo的一個成員
3)變量blah被定義為Foo.bar的一個成員
4)變量qaz被定義為Foo.bar.blah的一個成員
5)調(diào)用 Foo.bar.blah.quaz(1)
6)重復1至3。系統(tǒng)并不知道如果調(diào)用qaz改變了對象模型1-3步必須重新執(zhí)行
7)定義baz為 Foo.bar.blah的成員,輸出值
8)重復1-3,執(zhí)行zaq
9)重復1-3,執(zhí)行abc
正如你看到的,效率極其低下,最快的方法就是把這些代碼寫在vbscript中:
Set myobj = Foo.bar.blah ' do the resolution of blah ONCE
Myobj.baz = myobj.qaz(1)
If Myobj.zaq = Myobj.abc then