嚴格控制Session
可以將不需要Session的內容(比如協助畫面,訪問者地區,等等)移動到關閉Session的獨立ASP應用程式中。在基礎頁面上,可以給ASP一個指示,讓它不需要使用Session。將下面的代碼直接加入到ASP頁面的頭部:
<%@EnableSessionState=False%>
在Web伺服器上緩衝經常使用的資料
典型的情況是:ASP頁面從後台儲存中取回資料,然後以超文字標記語言 (HTML)(HTML)的形式形成結果。不管資料庫的速度如何,從記憶體中取回資料要比從後台存放裝置中快得多。從本地硬碟讀取資料通常也非常快。所以,提高效能可以通過快取服務器上的資料來實現,無論是將資料緩衝在記憶體中,或者本地硬碟中。
緩衝是經典的“空間換時間”的折中方式。如果緩衝得恰當,就可以看到顯著的效能提升。為了讓緩衝有效,必須保證快取資料是經常要重用的,而且也是計算起來繁瑣的。裝滿陳舊資料的緩衝是對記憶體的浪費。
不經常改變的資料是緩衝的較好對象,因為不需要隨時考慮這些資料更新後的同步操作。組合框、參考表格、DHTML代碼、擴充標記語言串、菜單以及網站組態變數(包括資料來源名字,Internet協議地址IP以及Web路徑)都是很好的緩衝對象。注意:要快取資料運算式而不是資料本身。如果一個ASP頁面經常變化並且很費力去緩衝(比如整個產品目錄),就要考慮預產生HTML,而不是每次發生請求時再描述它。
在Application或Session對象中緩衝經常使用的資料
ASP中的Application和Session對象是在記憶體中快取資料的便利容器。你可以將資料賦值給Application和Session對象,這些資料在HTTP調用期間將一直保持在記憶體中。Session中的資料是為每一個使用者服務的,Application中的資料是所有使用者共用的。
何時需要在Application和Session中裝入資料?通常,當應用程式啟動或者會話開始時,資料就被裝入了。為了在這時裝入資料,在Application OnStart()或者Session OnStart()中分別添加適當的代碼。這些函數位於檔案Global.asa中,如果原來不存在,就添加上。也可以在資料首次需要的時候調入,在ASP頁面中添加代碼,檢查資料是否存在,如果沒有發現,就調入它。這裡有一個例子,它代表了被稱為“lazy evalution”的經典效能處理技術:直到需要,再去計算。
拷貝經常使用的資料到指令碼變數中
在ASP中存取COM對象時,應該拷貝經常使用的對象資料到指令碼變數中,這樣就減少了對COM對象的方法調用。這些調用要比存取指令碼變數相對來說費時費力。當存取Collection和Dictionary對象時,使用這項技巧也減少了昂貴的尋找操作。
通常,如果要不止一次地存取對象資料,就應將資料放入指令碼變數中,對象資料主要也就是Request變數(表單和查詢字串變數)。比如,網站要傳遞一個叫做UserID的查詢字串變數,假設它將在一個特殊頁面被引用12次,那麼不需要調用Request("UserID")12次,只要在ASP頁面的頭部分配給UserID一個變數,然後在頁面中使用它,這樣做就節省了11次COM方法的調用。
在任何可能時使用Server.Transfer,而不要用Response.Redirect
Response.Redirect告訴瀏覽器請求另一個不同的頁面,這常常用於引導使用者到登入頁面或者出錯處理頁面。由於重新導向強迫了一個新頁面請求,結果是瀏覽器必須要與Web伺服器迴圈2次,並且Web伺服器必須處理一個額外的請求。Server.Transfer執行在同一伺服器上的頁面傳輸,這將避免額外的瀏覽器-Web伺服器的資料迴圈,形成良好的系統效能,對於使用者也有較好的回應時間。當然Server.Transfer只支援相對路徑(即站內使用)。