ASP(Active Serverページ)は、Microsoftが立ち上げたPWS(Personal Web Server)&IIS(Internet Information Server)プラットフォームに基づいた動的なWebページ開発テクノロジーであり、現在はより成熟して完璧になっています。ここでは、コードの最適化に関する簡単な議論しかありません。
8 ASPコーディング最適化手法:
1。VBScript変数を宣言します
ASPでは、VBScriptには強力なサポートが提供されており、VBScript関数とメソッドをシームレスに統合できます。 ASPではさまざまなタイプの概念が曖昧になっているため、多くのプログラマーは、ASPとVBScriptの間の相互作用中にVBScript変数を宣言しないことに慣れており、サーバーの解析負荷が増加し、サーバーの応答要求速度に影響します。
これを考慮して、ユーザーがVBで可変宣言を実行するように強制するのと同じように、ユーザーにVBScriptの可変宣言を実行させることができます。実装方法は、ASPプログラムラインの先頭に<%オプションの明示的な%>を配置することです。
2。URLアドレスをエンコードします
ASPを使用してパラメーターとジャンプを備えたURLアドレスを動的に生成する場合、IEで解析するのは普通ですが、NetScrapeを閲覧する場合、次のようにエラーがあります。
- httperror400
- 400BadRequest
- Duetomalformedsyntax、そこにいると、これらの人はそれに耐えることができませんでした。
- theclientは、modificationsでrepeattherequestをnotequesttherequest with repeatt with -repeattherquest with -repeats with -repeats with -repeats not requestにする必要があります。
解決策は、ASPビルトインサーバーオブジェクトのURLENCODEメソッドを使用して、生成されたURLパラメーターをエンコードすることです。
- <%
- url = xur.asp
- var1 = username =&server.urlencode(xur)
- var2 =&company =&server.urlencode(xurstudio)
- var3 =&phone =&server.urlencode(021-53854336-186)
- Response.redirecturl&?&var1&var2&var3
- %>
3.オブジェクトをクリアします
オブジェクトを使用した後、最初にオブジェクトが占有しているシステムリソースを解放してから、オブジェクトを無料に設定してメモリを占有します。当時、私は明確なオブジェクトのないページに100を超えるレコードセットを作成することでIISをクラッシュさせました。次のコードでは、データベースコンテンツを使用してドロップダウンリストを作成します。コードの例は次のとおりです。
- <%mydsn = dsn = xur; uid = xur; pwd = xur
- mysql = select*fromauthorswhereau_id <100
- setConntemp = server.createObject(adodb.Connection)
- conntemp.openmydsn
- setrStemp = conntemp.execute(mysql)
- ifrStemp.eofthen
- Response.Writeデータベースは空です
- respons.writemysql
- conntemp.close
- setConntemp = Nothing
- Response.End
- endif%>
- <%DOUNTILRSTEMP.EOF%>
- <%
- rstemp.movenext
- ループ
- rstemp.close
- setrStemp =何もない
- conntemp.close
- setConntemp = Nothing
- %>
4.文字列を使用してSQLクエリを作成します
文字列を使用してクエリを確立しても、それとは反対に、サーバーの解析時間も増加します。ただし、単純なクエリステートメントの代わりに文字列を使用してクエリを使用することをお勧めします。これの利点は、プログラムの問題をすぐに発見し、それによりプログラムを促進し、効率的に生成できることです。例は次のとおりです。
- <%mysql = select*
- mysql = mysql&fromempublishers
- mysql = mysql&wherestate = 'ny'
- respons.writemysql
- setrStemp = conntemp.execute(mysql)
- rstemp.close
- setrStemp =何もない
- %>
5.ケースを使用して条件を選択します
条件付き選択を行うときは、ケースステートメントを使用して、ステートメントの使用を避けてください。ケースステートメントを使用すると、プログラムが流れやすくなり、ステートメントよりも速く実行できます。例は次のとおりです。
- <%
- fori = 1to1000
- n = i
- Response.writeaddsuffix(n)&<br>
- 次
- %>
- <%
- functionaddsuffix(num)
- numpart = right(num、1)
- selectcasenumpart
- case1
- ifinstr(num、11)then
- num = num&th
- それ以外
- num = num&st
- endif
- ケース2
- ifinstr(num、12)then
- num = num&th
- それ以外
- num = num&nd
- endif
- ケース3
- ifinstr(num、13)then
- num = num&th
- それ以外
- num = num&rd
- endif
- ケース4
- num = num&th
- caseelse
- num = num&th
- EndSelect
- addsuffix = num
- エンド機能
- %>
6. adovbs.incファイルで定義された定数を使用して、レコードセットを開きます
レコードセットを開くと、レコードセットが開くカーソルタイプとロックタイプを定義できます。これらのタイプを定義するために、adovbs.incファイルに定義された定数がいくつかあります。 adovbs.incファイルは、/inetpub/iissamples/iisamplesディレクトリに保存されます。以下は、一般的に使用されるいくつかのカーソルタイプとロックタイプです。
カーソルタイプ:adopenly cursorは前方に進むことができます他のユーザーによって。
ロックタイプ:Adlockreadneyは、レコードを編集するときにレコードをロックすることができません。
- <! - #includevirtual =/adovbs.inc->
- <%
- connectme = dsn = xur; uid = xur; pwd = xur
- sqltemp = select*frommpublisherswherename = 'xur'
- setrStemp = server.createObject(adodb.recordset)
- rstump.opensqltemp、connectme、adeolenstatic、adlockoptimstic
- Response.WriterStemp.RecordCount&Recordsin <br>&sqltemp
- rstemp.close
- setrStemp =何もない
- %>
7。Global.asaファイルでオブジェクト定義を避けます
Global.ASAファイルの内容はサイト内のすべてのファイルによって参照できるため、間違いなく、Global.ASAファイルのオブジェクトを定義できます。たとえば、Global.ASAのApplication_Onstart関数では、次の定義が行われます。
- <%subapplication_onstart
- setApplication(theconn)= server.createObject(adodb.Connection)
- endub%>;
これにより、サイト上の任意のコードで同様の参照を作成できます。
- <%
- mysql = select*frommpublisherswherestate = 'xur'
- setrStemp = application(theconn).execute(mysql)
- %>
同様に、レコードセットオブジェクトはsession_onstart関数で作成できます
- <%subsession_onstart
- setSession(rstemp)= server.createObject(adodb.Recordset)
- endub%>
次に、次の引用がサイトで作成されます。
- <%
- mysql = select*frommpublisherswherestate = 'xur'
- setSession(rstemp)= conntemp.execute(mysql)
- %>
ただし、これを行うには、アプリケーションとセッションの両方の変数がWebサイトを閉じるときにのみ占有されたリソースをリリースするため、セッションパラメーターは多くの不要なメモリを無駄にします。パフォーマンス。 。
解決策:オブジェクトを定義するASPページを作成し、これらのオブジェクトを呼び出す必要があるページにこのASPページを紹介します。定義されたオブジェクトのASPページ名が定義されていると仮定すると、ASPに対応するASPページに次のステートメントを追加することでページを紹介できます。
ページを導入するときは、紹介するASPファイルに<%@leanguage = vbscript%>ステートメントを含めないことをお勧めします。 ASPファイルには、 @で定義された言語を解析するスクリプトが1つしかないためです。
8。安全保護
ASPは優れたコード保護メカニズムを提供し、すべてのASPコードがサーバー側で実行され、クライアントコードの実行の結果のみを返します。それでも、IISの古いバージョンでは、ファイル名:: $データの後にASPのソースコードを表示できます。以下は、2つの簡単な安全上の注意事項です。
拡張機能としてINC ASPを搭載したファイルを導入することをお勧めしますが、拡張機能としてASPを使用してファイルを導入することをお勧めします。これらのコードは、セキュリティメカニズムが不十分なWebサーバーで実行される場合、アドレスバーを入力するだけでインポートされたファイルの内容を閲覧できます(Incが拡張機能であるためです)。タイプ(INCなど)は定義されていません。ファイルはソースコードに表示されます。
データベースファイルをWebサイト構造内に配置しないでください。悪意のある人がデータベースパスを取得すると、データベースを簡単に取得してからデータベースコンテンツを任意に変更できます。より良いアプローチは、データベースのDSN(日付ソース名)を確立し、データベースにアクセスするときにDSNに直接アクセスすることです。
上記の8つのASPコーディング最適化手法のそれぞれは非常に重要であり、誰もがそれを慎重に体験し、自分のものになるためにそれを本当に理解する必要があります。