




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Asp編碼優化技巧1、聲明VBScript變量在ASP中,對vbscript提供了強勁的支持,能夠無縫集成vbscript的函數、方法,這樣給擴展ASP的現有功能提供了很大便利。由于ASP中已經模糊了變量類型的概念,所以,在進行ASP與vbscript交互的過程中,很多程序員也慣于不聲明vbscript的變量,這樣加重了服務器的解析負擔,進而影響服務器的響應請求速度。鑒于此,我們可以象在VB中強制用戶進行變量聲明一樣在vbscript中強制用戶進行變量聲明。實現方法是在ASP程序行首放置% option explicit%。2、對URL地址進行編碼在我們使用asp動態生成一個帶參數URL地址并
2、進行跳轉時,在IE中解析很正常,但在NetScrape瀏覽時卻有錯誤如下: HTTP Error 400400 Bad RequestDue to malformed syntax, the request could not be understood by the server.The client should not repeat the request without modifications.解決方法是對生成的URL參數使用ASP內置server對象的URLencode方法進行URL編碼,例子如下:%URL=xur.aspvar1=username= & server.URLen
3、code(xurvar2=&company= & server.URLencode(xurstudiovar3=&phone= & server.URLencode186response.redirect URL & ? & var1 & var2 & var3%3、清空對象當使用完對象后,首先使用Close方法來釋放對象所占用的系統資源;然后設置對象值為“nothing”釋放對象占用內存。當年,我就是在一張頁面上創建了百余個沒有清空對象的記錄集而崩潰了我的IIS 。下面的代碼使用數據庫內容建立一個下拉列表。代碼示例如下: % myDSN=DSN=xur;uid=x
4、ur;pwd=xurmySQL=select * from authors where AU_ID100set conntemp=server.createobject(adodb.connectionconntemp.open myDSNset rstemp=conntemp.execute(mySQLif rstemp.eof thenresponse.write 數據庫為空response.write mySQLconntemp.closeset conntemp=nothingresponse.end end if%do until rstemp.eof%rstemp.movenext
5、looprstemp.closeset rstemp=nothingconntemp.closeset conntemp=nothing%4、使用字符串建立SQL查詢使用字符串來建立查詢并不能加快服務器的解析速度,相反,它還會增加服務器的解析時間。但在這里仍然推薦使用字符串代替簡單的查詢語句來進行查詢。這樣做的好處是,可以迅速發現程序問題所在,從而便利高效地生成程序。示例如下: %mySQL= select * mySQL= mySQL & from publishersmySQL= mySQL & where state=NYresponse.write mySQLset rstemp=co
6、nntemp.execute(mySQLrstemp.closeset rstemp=nothing%5、使用case進行條件選擇在進行條件選擇的時候,盡量使用case語句,避免使用if語句。使用case語句,可以使程序流程化,執行起來也比if語句來的快。示例如下: % FOR i = 1 TO 1000 n = i Response.Write AddSuffix(n & br NEXT% % Function AddSuffix(numnumpart = RIGHT(num,1SELECT CASE numpartCASE 1IF InStr(num,11 THENnum = num &
7、thELSEnum = num & stEND IFCASE 2IF InStr(num,12 THENnum = num & thELSEnum = num & ndEND IFCASE 3IF InStr(num,13 THENnum = num & thELSEnum = num & rdEND IFCASE 4num = num & thCASE ELSEnum = num & thEND SELECTAddSuffix = num END FUNCTION%6、使用adovbs.inc文件中定義的常量打開記錄集打開記錄集時,可以定義記錄集打開的游標類型和鎖定類型。在adovbs.in
8、c文件中定義了一些常量來定義這些類型。adovbs.inc文件保存在inetpubiissamplesIISamples目錄下面。下面列舉幾個常用的游標類型和鎖定類型。 游標類型:adOpenFowardOnly游標只能向前;adOpenKeyset游標可向前或者向后,如一用戶添加記錄,新記錄不會出現在記錄集中;adOpenDynamic游標動態隨意;adOpenStatic記錄集不對其他用戶造成的記錄修改有所反映。鎖定類型:adLockReadOney不能修改記錄集中的記錄;adLockPessimistic在編輯一條記錄時鎖定它;adLockOptimstic調用記錄集Update方法時才
9、鎖定記錄;adLockBatchOpeimstic記錄只能成批更新。!-#INCLUDE VIRTUAL=/ADOVBS.INC -%connectme=DSN=xur;uid=xur;pwd=xursqltemp=select * from publishers where name=xurset rstemp=Server.CreateObject(adodb.Recordsetrstemp.open sqltemp, connectme, adOpenStatic,adLockOptimsticresponse.write rstemp.recordcount & records inb
10、r & sqltemprstemp.closeset rstemp=nothing%7、避免在使用global.asa文件中進行對象定義由于global.asa文件中的內容可以為站點內所有文件引用,無疑,在global.asa文件中進行對象定義可以省去很多重復工作。比如在global.asa中的application_onstart函數中進行如下定義: %SUB application_onstartset application(theCONN=server.createobject(adodb.connectionEND SUB%;這樣就可以在站點任何代碼中做類似引用:% mySQL=se
11、lect * from publishers where state=xurset rstemp=application(theconn.execute(mySQL%同樣地,可以在session_onstart函數中創建記錄集對象%SUB session_onstartset session(rstemp=server.createobject(adodb.recordsetEND SUB%然后在站點也面中進行如下引用:%mySQL=select * from publishers where state=xurset session(rstemp=conntemp.execute(mySQL
12、%但這樣做的同時也有很大的負面影響,由于Application和session變量都只有在關閉網站的時候才釋放占用的資源,所以session參數會浪費大量不必要內存,而且此時application變量成為服務器性能的瓶頸。解決方法:建立定義對象asp頁面,在需要進行調用這些對象的頁面上,引入這張asp頁面。假設定義對象的asp頁面名稱為define.asp,則只要在對應asp頁面中加入以下語句就能引入該頁面。!-#INCLUDE VIRTUAL=/define.asp -在進行頁面引進時,最好在待引進的asp文件中不要包含%LANGUAGE=VBSCRIPT%語句。因為在asp文件中,只能有一句由來定義的腳本解析語言。8、安全防護asp提供了很好的代碼保護機制,所有的asp代碼都在服務器端執行而只返回給客戶端代碼執行結果。即便這樣,在老版本的IIS中還可以在文件名后面家:$DATA來查看asp的源代碼,這已經屬于Web Server安全范疇不在本文討論范圍內。下面提出兩點簡單的安全注意事項。 雖然在asp中建議引入文件以inc作為擴展名,在這里仍建議以asp作為引文件的擴展名。當這些代碼在安全機制不好的Web Server上運行時,只需在地址欄上輸入引入文件的地址(inc為擴
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業單方終止合同補償
- 2025地質勘察合同范本
- 2025委托開發合同范本協議
- 2025技術合作 科技創新與資本對接項目合同
- 2025家居設計代購簡約版合同范本
- 山東省泰安市2025屆高三二輪復習檢測語文試題及參考答案
- 2025年農村房屋買賣合同范本
- 2025供暖設備供應合同(模板)
- 2025年購買二手別墅合同范本
- 2025版權質押合同深度分析
- 中考英語高頻單詞(背誦版)
- 《冷鏈物流管理》教學大綱
- 中華護理學會團體標準-氣管切開非機械通氣患者氣道護理
- 礦山地質環境監測信息平臺
- GB/T 44562-2024航空用鈦合金100°沉頭大底腳螺紋抽芯鉚釘
- 2024年浙江省初中學業水平考試社會試題
- 立于書外讀化學學習通超星期末考試答案章節答案2024年
- 建筑智能化配管-隱蔽工程檢查驗收記錄
- 在建工程評估報告
- 鐵路工程管理平臺-EBS分解子系統用戶手冊
- 組織內外部環境因素識別與控制表
評論
0/150
提交評論