推奨:ストアドプロシージャを使用して、データページングASPを実装します1。テーブルtiku_koushiifを作成します(select * from dbo.sysobjects where id = object_id(n '[dbo]。[tiku_koushi]')およびobjectproperty(id、n'isusertable ')= 1)ドロップテーブル[dbo]。
ASP(Active Serverページ)は、Microsoftが立ち上げたPWS(Personal Web Server)&IIS(Internet Information Server)プラットフォームに基づいた動的なWebページ開発テクノロジーであり、現在はより成熟して完璧になっています。ここでは、コードの最適化に関する簡単な議論しかありません。
1。VBScript変数を宣言します
ASPでは、VBScriptには強力なサポートが提供されており、VBScript関数とメソッドをシームレスに統合できます。 ASPではさまざまなタイプの概念が曖昧になっているため、多くのプログラマーは、ASPとVBScriptの間の相互作用中にVBScript変数を宣言しないことに慣れており、サーバーの解析負荷が増加し、サーバーの応答要求速度に影響します。
これを考慮して、VBのようにVBScriptで可変宣言を強制することができます。実装方法は、ASPプログラムラインの先頭に<%オプションの明示的な%>を配置することです。
2。URLアドレスをエンコードします
ASPを使用してパラメーターとジャンプを備えたURLアドレスを動的に生成する場合、IEで解析するのは普通ですが、NetScrapeを閲覧する場合、次のようにエラーがあります。
HTTPエラー400
400悪いリクエスト
不正な構文のため、リクエストはサーバーでは理解できませんでした。
クライアントは、変更なしでリクエストを繰り返さないでください。
解決策は、ASPビルトインサーバーオブジェクトのURLENCODEメソッドを使用して、生成されたURLパラメーターをエンコードするURLです。例は次のとおりです。
<%
url = xur.asp
var1 = username =&server.urlencode(xur)
var2 =&company =&server.urlencode(xurstudio)
var3 =&phone =&server.urlencode(021-53854336-186)
Response.redirect url&? &var1&var2&var3
%>
3.オブジェクトをクリアします
オブジェクトを使用した後、最初に閉じる方法を使用して、オブジェクトが占有しているシステムリソースを解放します。次に、オブジェクト値をNothingに設定して、オブジェクトを解放してメモリを占有します。当時、私は明確なオブジェクトのないページに100を超えるレコードセットを作成することでIISをクラッシュさせました。次のコードでは、データベースコンテンツを使用してドロップダウンリストを作成します。コードの例は次のとおりです。
<%mydsn = dsn = xur; uid = xur; pwd = xur
mysql = select * au_id <100からselect *
conntemp = server.createObject(adodb.Connection)を設定します
conntemp.open mydsn
set rstemp = conntemp.execute(mysql)
rstomep.eofの場合
Response.Writeデータベースは空です
Response.write mysql
conntemp.close
set conntemp = Nothing
Response.End
if>を終了します
<%rstemp.eof%>まで行います
<%
rstemp.movenext
ループ
rstemp.close
set rstemp = Nothing
conntemp.close
set conntemp = Nothing
%>
4.文字列を使用してSQLクエリを作成します
文字列を使用してクエリを確立しても、サーバーの解析速度が高速化されません。それどころか、サーバーの解析時間も増加します。ただし、単純なクエリステートメントの代わりに文字列を使用してクエリを使用することをお勧めします。これの利点は、プログラムの問題をすぐに発見し、それによりプログラムを促進し、効率的に生成できることです。例は次のとおりです。
<%mysql = select *
mysql = mysql&from Publishers
mysql = mysql&where state = 'ny'
Response.write mysql
set rstemp = conntemp.execute(mysql)
rstemp.close
set rstemp = Nothing
%>
5.ケースを使用して条件を選択します
条件付き選択を行うときは、ケースステートメントを使用して、ステートメントの使用を避けてください。ケースステートメントを使用すると、プログラムが流れやすくなり、ステートメントよりも速く実行できます。例は次のとおりです。
<%
i = 1〜1000の場合
n = i
Response.write addsuffix(n)&<br>
次
%>
<%
関数addsuffix(num)
numpart = right(num、1)
ケースNumpartを選択します
ケース1
If strust(num、11)then
num = num&th
それ以外
num = num&st
ifを終了します
ケース2
If strust(num、12)then
num = num&th
それ以外
num = num&nd
ifを終了します
ケース3
If strust(num、13)then
num = num&th
それ以外
num = num&rd
ifを終了します
ケース4
num = num&th
ケース他のケース
num = num&th
[選択]を終了します
addsuffix = num
エンド関数
%>
6. adovbs.incファイルで定義された定数を使用して、レコードセットを開きます
レコードセットを開くと、レコードセットが開くカーソルタイプとロックタイプを定義できます。
これらのタイプを定義するために、adovbs.incファイルに定義された定数がいくつかあります。 adovbs.incファイルは、/inetpub/iissamples/iisamplesディレクトリに保存されます。以下は、いくつかの一般的に使用されるカーソルタイプとロックタイプです。
カーソルタイプ:
AdopenFowardlyのカーソルは前進することしかできません。 AdopenKeysetカーソルは、前進または後方に移動できます。ユーザーがレコードを追加した場合、新しいレコードはレコードセットに表示されません。 Adopendynamicカーソルは動的でランダムです。採用されたレコードセットは、他のユーザーによって引き起こされるレコードの変更を反映していません。
ロックタイプ:
Adlockreadoneyは、レコードセットのレコードを変更できません。 adlockpessimisticは、レコードを編集するときにロックします。 adlockoptimsticは、adlockbatchopeimsticレコードをバッチでのみ更新できる場合にのみ、レコードセット更新方法をロックします。
<! - #virtual =/adovbs.inc->を含める - >
<%
connectme = dsn = xur; uid = xur; pwd = xur
sqltemp = select * from publishers where name = 'xur'
rstemp = server.createObject(adodb.Recordset)を設定します
rstump.open sqltemp、connectme、adopenstatic、adlockoptimstic
respons.write rstemp.RecordCount&Records in <br>&sqltemp
rstemp.close
set rstemp = Nothing
%>
7。Global.asaファイルでオブジェクト定義を避けます
Global.ASAファイルの内容はサイト内のすべてのファイルによって参照できるため、間違いなく、Global.ASAファイルのオブジェクトを定義できます。
たとえば、Global.ASAのApplication_Onstart関数では、次の定義が行われます。
<%sub application_onstart
アプリケーション(theconn)= server.createobject(adodb.connection)を設定します
sub%>;
これにより、サイト上の任意のコードで同様の参照を作成できます。
<%
mysql = select *出版社からstate = 'xur'
set rstemp = application(theconn).execute(mysql)
%>
同様に、レコードセットオブジェクトはsession_onstart関数で作成できます
<%sub Session_onstart
セットセッション(rstemp)= server.createObject(adodb.Recordset)
sub%>を終了します
次に、次の引用がサイトで作成されます。
<%
mysql = select *出版社からstate = 'xur'
セットセッション(rstemp)= conntemp.execute(mysql)
%>
ただし、これを行うことは大きなマイナスの影響もあります。アプリケーションとセッションの変数の両方が、ウェブサイトを閉じるときに占有されたリソースをリリースするため、セッションパラメーターは多くの不要なメモリを無駄にし、この時点でアプリケーション変数はサーバーのパフォーマンスのボトルネックになります。
解決:
オブジェクトを定義するASPページを作成し、これらのオブジェクトを呼び出す必要があるページにこのASPページを紹介します。定義されたオブジェクトのASPページ名が定義されていると仮定すると、ASPに対応するASPページに次のステートメントを追加することでページを紹介できます。
<! - #virtual =/define.asp->を含める
ページを導入するときは、紹介するASPファイルに<%@leanguage = vbscript%>ステートメントを含めないことをお勧めします。 ASPファイルには、 @で定義された言語を解析するスクリプトが1つしかないためです。
8。安全保護
ASPは優れたコード保護メカニズムを提供し、すべてのASPコードがサーバー側で実行され、クライアントコードの実行の結果のみを返します。それでも、IISの古いバージョンでは、ファイル名:: $データの後にASPのソースコードを表示できます。以下は、2つの簡単な安全上の注意事項です。
拡張機能としてINC ASPを搭載したファイルを導入することをお勧めしますが、拡張機能としてASPを使用してファイルを導入することをお勧めします。これらのコードが、セキュリティメカニズムが不十分なWebサーバーで実行されると、アドレスバーに入力するだけでインポートされたファイルの内容を閲覧できます(Incは拡張機能です)。これは、Webサーバー上で、特定のタイプ(INCなど)を解決する動的接続ライブラリが定義されていない場合、ファイルがソースコードに表示されるためです。
データベースファイルをWebサイト構造内に配置しないでください。悪意のある人がデータベースパスを取得すると、データベースを簡単に取得してからデータベースコンテンツを任意に変更できます。より良いアプローチは、データベースのDSN(日付ソース名)を確立し、データベースにアクセスするときにDSNに直接アクセスすることです。
共有:ASPのヒント:リクエストコレクションの効率を改善しますリクエストコレクションを使用してASPコレクションにアクセスして値を抽出する効率を向上させることは、時間のかかるリソースを消費するプロセスです。この操作には関連セットの一連の検索が含まれているため、ローカル変数にアクセスするよりもはるかに遅いです。したがって、ページに入る予定がある場合