aspページでアップしたアクセス速度の方法詳細
テクニックの一つは、Request集合を使用する効率を高めてASPセットにアクセスして、1つの値を抽出するのは時間がかかり、計算リソースを占用する過程である。この操作には関連するセットの探索の一連が含まれているので、これは一つの局所変数にアクセスするよりもはるかに遅い。したがって、ページ内でRequestセットの1つの値を複数回使用するつもりであれば、それを局所変数として保存することを考慮すべきである。例えば、シナリオエンジンの処理速度を速くするためにコードを以下のように書きます。
他の選択肢がない場合は、strange=Requestという形でパラメータを取得しないでください。これは最初のペアの名前が見つかるまで、順番に全部のセットを検索します。このようにすると、直接アクセスよりも適切な集合効率が低く、かつ、この値が他の集合に絶対に現れないことを保証できる限り、安全ではない。例えば、顧客の要求を満たすWEBサーバ名を検索することが望ましいかもしれません。これは、各クエリに表示されるRequest.ServerVarablesセットから「SERVER_」を探しています。NAMEは実現する。しかし、他の集合にも「SERVER_」という名前が含まれていたらNAMEの値(キー名は大文字と小文字を区別しない)は、Requestを使用するときに使用します。Name")の場合は、エラーの結果が得られます。要するに、できるだけ直接的に適当な集合に訪問するべきです。
テクニックの3:時間がかかる前にResonse.Is CientConneced属性を使います。
Response.Is ClienntConnectedを使用することは、ユーザーがサーバに接続しているかどうかを観察し、ASPが作成したウェブページをロードしているかを確認するための有用な方法である。ユーザーが接続を切断したり、ダウンロードを停止したりすれば、サーバーのリソースを無駄にしないでホームページを作成します。バッファの内容はIISによって破棄されます。したがって、多くの時間を必要とする計算や資源が多く使われているウェブページにとって、各段階で観光者がオフラインされているかどうかを確認する価値があります。
通常面では、データはWEBサイトの実際の内容を構成しています。したがって、ADO操作を最適化してASPコードの実行を加速させることは、非常に有用である。
a.必要な列だけを選択します。ADOレコードセットを開く場合、すべての列を得る必要がない限り、自動的に表名(つまりSELECT*)を使用してはいけません。単独の列を使用すると、サーバに送信されるデータ量を減らすことを意味します。すべての列を使用する必要があっても、各列に単独で名前を付けることは、サーバがこれらの列の名前を説明する必要がないからです。
b.記憶プロセスをできるだけ使用する。記憶プロセスはあらかじめコンパイルされたプログラムで、準備された実行計画が含まれているので、SQL文よりも速く実行されます。
c.適切なカーソルとロックモードを使用します。すべての作業が記録集中からデータを読み取り、画面に表示するだけであれば、デフォルトのものは前に移動して読み取り専用のレコードセットのみを使用する。ADOは記録とロックの細部を守るための作業が少ないほど、実行の性能が高くなります。
d.オブジェクト変数を使用します。記録セットを巡回したときに、確実に性能を向上させる方法は、集合中のメンバにオブジェクト変数を使用することである。たとえば:
テクニック5:脚本エンジンを混ぜない
ASPページではVB Scriptも使えますし、JScriptも使えます。しかし、同じページでJScriptとVBIScriptを同時に使うのは好ましくないです。サーバーはシナリオエンジンの2つを実装してキャッシュしてみなければならないので、システム負担はある程度増大しています。したがって、性能の点から考えて、同じページに複数のスクリプトエンジンを混用するべきではない。
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If
技巧の2:直接に適当な集合を訪問します。他の選択肢がない場合は、strange=Requestという形でパラメータを取得しないでください。これは最初のペアの名前が見つかるまで、順番に全部のセットを検索します。このようにすると、直接アクセスよりも適切な集合効率が低く、かつ、この値が他の集合に絶対に現れないことを保証できる限り、安全ではない。例えば、顧客の要求を満たすWEBサーバ名を検索することが望ましいかもしれません。これは、各クエリに表示されるRequest.ServerVarablesセットから「SERVER_」を探しています。NAMEは実現する。しかし、他の集合にも「SERVER_」という名前が含まれていたらNAMEの値(キー名は大文字と小文字を区別しない)は、Requestを使用するときに使用します。Name")の場合は、エラーの結果が得られます。要するに、できるだけ直接的に適当な集合に訪問するべきです。
テクニックの3:時間がかかる前にResonse.Is CientConneced属性を使います。
Response.Is ClienntConnectedを使用することは、ユーザーがサーバに接続しているかどうかを観察し、ASPが作成したウェブページをロードしているかを確認するための有用な方法である。ユーザーが接続を切断したり、ダウンロードを停止したりすれば、サーバーのリソースを無駄にしないでホームページを作成します。バッファの内容はIISによって破棄されます。したがって、多くの時間を必要とする計算や資源が多く使われているウェブページにとって、各段階で観光者がオフラインされているかどうかを確認する価値があります。
…… Code to create first part of the page
If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
…… Code to create next part of page
技術の4:ASPの中のADOの操作を最適化します。通常面では、データはWEBサイトの実際の内容を構成しています。したがって、ADO操作を最適化してASPコードの実行を加速させることは、非常に有用である。
a.必要な列だけを選択します。ADOレコードセットを開く場合、すべての列を得る必要がない限り、自動的に表名(つまりSELECT*)を使用してはいけません。単独の列を使用すると、サーバに送信されるデータ量を減らすことを意味します。すべての列を使用する必要があっても、各列に単独で名前を付けることは、サーバがこれらの列の名前を説明する必要がないからです。
b.記憶プロセスをできるだけ使用する。記憶プロセスはあらかじめコンパイルされたプログラムで、準備された実行計画が含まれているので、SQL文よりも速く実行されます。
c.適切なカーソルとロックモードを使用します。すべての作業が記録集中からデータを読み取り、画面に表示するだけであれば、デフォルトのものは前に移動して読み取り専用のレコードセットのみを使用する。ADOは記録とロックの細部を守るための作業が少ないほど、実行の性能が高くなります。
d.オブジェクト変数を使用します。記録セットを巡回したときに、確実に性能を向上させる方法は、集合中のメンバにオブジェクト変数を使用することである。たとえば:
While Not RsGc.EOF
Response.Write " :" & RsGc("GcMC") & "( :" & RsGc("GcCode") & ")"
RsGc.MoveNext
Wend
下記のコードに書き換えて実行を加速できます。
set GcMc=RsGc("GcMc")
set GcCode=RsGc("GcCode")
While Not rsGc.EOF Response.Write " :" & GcMc & "( :" & GcCode & ")"
RsGc.MoveNext
Wend
新しいコードはオブジェクト変数の参照を確立していますので、実際の変数ではなくオブジェクト変数を使用できます。これはスクリプトエンジンの動作が減少していることを意味します。テクニック5:脚本エンジンを混ぜない
ASPページではVB Scriptも使えますし、JScriptも使えます。しかし、同じページでJScriptとVBIScriptを同時に使うのは好ましくないです。サーバーはシナリオエンジンの2つを実装してキャッシュしてみなければならないので、システム負担はある程度増大しています。したがって、性能の点から考えて、同じページに複数のスクリプトエンジンを混用するべきではない。