第一點:可(kě)能基本上會寫ASP代碼的(de)人(rén)都知道,打開記錄集對(duì)象了(le),要關閉及連接(Connection)對(duì)象:如:rs.close,conn.close,set rs=nothing,set conn.close
第二點:寫ASP代碼的(de)離不開數據庫,很多(duō)人(rén)在取數據庫是都用(yòng)select * from....,很多(duō)下(xià)載的(de)源代碼也(yě)是這(zhè)樣寫,其實這(zhè)些看似不起眼的(de)地方,卻大(dà)大(dà)降低ASP執行速度。那麽我告訴你有多(duō)少字段就取多(duō)少字段,當然如果你要用(yòng)全部字段,用(yòng)*是沒多(duō)大(dà)區(qū)别,你怕麻煩呢(ne),還(hái)是關心速度呢(ne),就由你決定了(le).
第三點:能用(yòng)存儲過程的(de)地方盡量用(yòng),ACCESS我不太清楚能否用(yòng)存儲過程,但我在操作MSSQL或Oracle數據庫時(shí),基本上都用(yòng)存儲過程,除非遇到複雜(zá)的(de)查詢,這(zhè)樣有兩個(gè)好處,因爲存儲過程隻在創造時(shí)進行編譯,以後每次執行存儲過程都不需再重新編譯,這(zhè)樣就提高(gāo)了(le)你的(de)ASP程序運行的(de)速度,不需通(tōng)過SQL操作一次,編譯一次,第二個(gè)好處就是寫個(gè)通(tōng)用(yòng)的(de)存儲過程,這(zhè)樣可(kě)以減少代碼量.從數據庫角度上講存儲過程的(de)好處這(zhè)裏就不再細說了(le)
第四點:請使用(yòng)遊标操作數據庫,如果你隻是對(duì)一個(gè)表進行讀取操作,那麽請使用(yòng)forward-only,read-only遊标,因爲這(zhè)種遊标讀取數據庫是最爲快(kuài)速的(de),尤其是你的(de)讀取數據量很大(dà)的(de)情況下(xià)。
第五點:這(zhè)個(gè)可(kě)能很多(duō)人(rén)不知道,下(xià)載的(de)源代碼也(yě)我也(yě)從來(lái)沒看到過.但是性能卻能幫你提升5倍的(de)方法.很多(duō)朋友在用(yòng)ASP取數據庫記錄時(shí),喜歡這(zhè)麽寫rs("username"),rs("addr"),知道速度能快(kuài)點的(de)朋友可(kě)能會這(zhè)麽寫rs(1),rs(2),但我告訴你這(zhè)兩種都不是最快(kuài)的(de)方法,最快(kuài)應該這(zhè)麽寫
Dim objrs
Set objrs=rs(0)
response.wirte objrs
在取100條記錄以上時(shí)就會感覺到此種方法的(de)超級優勢,不信你試試,當然别忘記set objrs=nothing
第六點:盡量少用(yòng)Session對(duì)象和(hé)Application對(duì)象
這(zhè)2個(gè)家夥确實給我們程序帶來(lái)不少好處,但是又愛(ài)有恨,爲什(shén)麽用(yòng)多(duō)了(le),服務器被他(tā)們拖死,所以在這(zhè)裏不能說不要用(yòng),隻能說合理(lǐ)用(yòng)
第七點:用(yòng)了(le)對(duì)象要記得(de)關閉,就象剛才第五點最後的(de)一句話(huà)那樣
第八點:要合理(lǐ)的(de)使用(yòng)Include文件
我看過很多(duō)下(xià)載下(xià)來(lái)的(de)源代碼,把所有的(de)函數都寫到一個(gè)文件裏,然後用(yòng)到的(de)地方Include進來(lái),這(zhè)樣做(zuò)雖然帶來(lái)了(le)很大(dà)的(de)方便,但是在性能上又打了(le)折扣,原因總有吧,是的(de),你在其他(tā)頁面包含這(zhè)個(gè)文件的(de)時(shí)候,服務器端是要進行預編譯的(de),很可(kě)能在一個(gè)包含文件裏面有上百個(gè)函數,而你隻是想要使用(yòng)其中的(de)一個(gè)函數,這(zhè)樣就得(de)不償失了(le)。所以,盡可(kě)能的(de)分(fēn)割你的(de)包含文件成爲多(duō)個(gè)小的(de)包含文件。
第九點:能使用(yòng)ASP本身提供的(de)函數,就盡量使用(yòng)
第十點:動态數組要少用(yòng),這(zhè)東西也(yě)是吃(chī)内存的(de)大(dà)胃王
第十一點:提前聲明(míng)變量,沒有好習(xí)慣的(de)程序員(yuán)寫ASP程序,用(yòng)什(shén)麽寫什(shén)麽變量,從沒看到dim字眼,我要告訴你,提前聲明(míng)變量會加快(kuài)程序的(de)解釋執行時(shí)間,不聲明(míng)變量,不但程序難讀,整個(gè)程序在服務器的(de)執行效率也(yě)會打折扣。
第十二點:看到很多(duō)下(xià)載的(de)代碼,喜歡把所有的(de)數據庫的(de)增删改都寫在一段代碼裏,這(zhè)樣做(zuò)的(de)結果會使你的(de)運行速度減慢(màn)很多(duō),試想如果1000個(gè)人(rén)同時(shí)打開這(zhè)個(gè)處理(lǐ)頁面,那是多(duō)麽恐怖的(de)事情,我建議(yì)你把處理(lǐ)的(de)一件邏輯事件獨立寫成一個(gè)頁面,這(zhè)樣做(zuò)可(kě)以降低服務器端解釋執行的(de)負擔,而且閱讀起來(lái)也(yě)快(kuài)捷。
第十三點:我們一起討(tǎo)論,是把ASP嵌套在HTML裏速度快(kuài)呢(ne)?還(hái)是用(yòng)response.write()将整個(gè)網頁打印出來(lái)快(kuài)呢(ne)?