寫ASP程式已經有6年了,也下載了不少ASP源碼,看看別人怎麼寫,到現在也不敢說自己是個ASP的代碼能手,我認為寫一個程式,只要邏輯思維清晰,很簡單的,但要寫好一個程式就不簡單了.
這篇文章就想說一個事情.如何提升ASP代碼的執行速度.希望對那些做網站的朋友有所協助,寫代碼的人一定要養成好的習慣.
第一點:可能基本上會寫ASP代碼的人都知道,開啟記錄集對象了,要關閉及串連(Connection)對象:如:rs.close,conn.close,set rs=nothing,set conn.close
第二點:寫ASP代碼的離不開資料庫,很多人在取資料庫是都用select * from....,很多下載的原始碼也是這樣寫,其實這些看似不起眼的地方,卻大大降低ASP執行速度。那麼我告訴你有多少欄位就取多少欄位,當然如果你要用全部欄位,用*是沒多大區別,你怕麻煩呢,還是關心速度呢,就由你決定了.
第三點:能用預存程序的地方盡量用,ACCESS我不太清楚能否用預存程序,但我在操作MSSQL或ORACLE資料庫時,基本上都用預存程序,除非遇到複雜的查詢,這樣有兩個好處,因為預存程序只在創造時進行編譯,以後每次執行預存程序都不需再重新編譯,這樣就提高了你的ASP程式啟動並執行速度,不需通過SQL操作一次,編譯一次,第二個好處就是寫個通用的預存程序,這樣可以減少代碼量.從資料庫角度上講預存程序的好處這裡就不再細說了
第四點:請使用遊標操作資料庫,如果你只是對一個表進行讀取操作,那麼請使用forward-only,read-only遊標,因為這種遊標讀取資料庫是最為快速的,尤其是你的讀取資料量很大的情況下。
第五點:這個可能很多人不知道,下載的原始碼也我也從來沒看到過.但是效能卻能幫你提升5倍的方法.很多朋友在用ASP取資料庫記錄時,喜歡這麼寫rs("username"),rs("addr"),知道速度能快點的朋友可能會這麼寫rs(1),rs(2),但我告訴你這兩種都不是最快的方法,最快應該這麼寫
Dim objrs
Set objrs=rs(0)
response.wirte objrs
在取100條記錄以上時就會感覺到此種方法的超級優勢,不信你試試,當然別忘記set objrs=nothing
第六點:盡量少用Session對象和Application對象
這2個傢伙確實給我們程式帶來不少好處,但是又愛有恨,為什麼用多了,伺服器被他們拖死,所以在這裡不能說不要用,只能說合理用
第七點:用了對象要記得關閉,就象剛才第五點最後的一句話那樣
第八點:要合理的使用Include檔案
我看過很多下載下來的原始碼,把所有的函數都寫到一個檔案裡,然後用到的地方Include進來,這樣做雖然帶來了很大的方便,但是在效能上又打了折扣,原因總有吧,是的,你在其他頁麵包含這個檔案的時候,伺服器端是要進行先行編譯的,很可能在一個包含檔案裡面有上百個函數,而你只是想要使用其中的一個函數,這樣就得不償失了。所以,儘可能的分割你的包含檔案成為多個小的包含檔案。
第九點:能使用ASP本身提供的函數,就盡量使用
第十點:動態數組要少用,這東西也是吃記憶體的大胃王
第十一點:提前聲明變數,沒有好習慣的程式員寫ASP程式,用什麼寫什麼變數,從沒看到dim字眼,我要告訴你,提前聲明變數會加快程式的解釋執行時間,不聲明變數,不但程式難讀,整個程式在伺服器的執行效率也會打折扣。
第十二點:看到很多下載的代碼,喜歡把所有的資料庫的增刪改都寫在一段代碼裡,這樣做的結果會使你的運行速度減慢很多,試想如果1000個人同時開啟這個處理頁面,那是多麼恐怖的事情,我建議你把處理的一件邏輯事件獨立寫成一個頁面,這樣做可以降低伺服器端解釋執行的負擔,而且閱讀起來也快捷。
第十三點:我們一起討論,是把ASP嵌套在HTML裡速度快呢?還是用response.write()將整個網頁列印出來快呢?
okey!可能也有朋友會有疑義或有更好提升效能的方法,一定要告訴我,可別到論壇上再去討論什麼語言好,什麼語言有錢途了,任何一門技術都有學問,成精了都厲害!
我還是那句寫邏輯程式簡單,但寫好程式不容易,人長著腦袋要多總結,學到本事總是自己的!
要轉載的朋友,千萬別忘了注個出處,寫這麼一篇文章,真不容易,小時寫作文也沒這麼認真過'@'