ASPプログラミング入門ステップ(19):ASPスキル積算(2)


Sessionを厳格に制御することは、Sessionを必要としないコンテンツ(ヘルプ画面、ビジター領域など)を、Sessionをオフにする独立したASPアプリケーションに移動させることができる。基本ページでは、ASPにSessionを使用する必要がないように指示することができます。ASPページのヘッダに直接下記のコードを追加します。「%@EnbleSession State=False%」は、Webサーバ上でよく使用されるデータをキャッシュします。典型的な場合は、ASPページはバックグラウンドメモリからデータを取り出し、ハイパーテキストマーク言語(HTML)として結果を形成します。データベースの速度にかかわらず、メモリからデータを取り出すのはバックグラウンドメモリよりずっと速いです。ローカルハードディスクからデータを読み出すのも通常非常に速い。したがって、パフォーマンスを向上させることは、キャッシュサーバ上のデータによって実現されてもよく、メモリにデータをキャッシュしても、ローカルハードディスクにおいてもよい。キャッシュは古典的な「空間変換時間」の折衷方式です。キャッシュが適切であれば、著しいパフォーマンスアップが見られます。キャッシュを有効にするためには、キャッシュデータは常に再利用され、計算が煩雑であることを保証しなければならない。古いデータを満載したキャッシュはメモリの無駄です。頻繁に変更されないデータは、キャッシュされた比較的良い対象となります。これらのデータの更新後の同期操作をいつでも考慮する必要がないからです。コンボボックス、参照テーブル、DTMLコード、拡張マーク言語列、メニューおよびサイト構成変数(データソース名、InternetプロトコルアドレスIPおよびWebパスを含む)は、いずれも良いキャッシュオブジェクトである。データ自体ではなく、データ表現をキャッシュします。一つのASPページが常に変化し、かつキャッシュするのに苦労している場合(例えば、カタログ全体)は、要求が発生するたびにそれを記述するのではなく、あらかじめHTMLを生成することを考慮しなければならない。AppliationまたはSessionオブジェクトには、よく使用されるデータASPの中のAppplicationとSessionオブジェクトをキャッシュすることは、メモリにデータをキャッシュする便利なコンテナである。データをApplicationとSessionオブジェクトに割り当てることができます。これらのデータはHTTP呼び出しの間ずっとメモリに保存されます。Sessionにおけるデータはすべてのユーザにサービスされ、アプリにおけるデータはすべてのユーザが共有しています。アプリとセッションにデータを読み込む必要があるのはいつですか?通常、アプリケーションが起動またはセッションが開始されると、データがロードされます。この時にデータを読み込むために、Apple OStart()またはSession OStart()にそれぞれ適切なコードを追加します。これらの関数はファイルGlobal.asaの中にあります。元々存在しない場合は追加します。データが最初に必要な時に、ASPページにコードを追加して、データが存在するかどうかを確認してもいいです。もし発見されなかったら、それに入れます。ここには一例があります。必要になるまで計算します。よく使うデータをコピーしてスクリプト変数にASPでCOMオブジェクトにアクセスすると、よく使うオブジェクトデータをスクリプト変数にコピーするべきで、COMオブジェクトに対するメソッド呼び出しが減少します。これらの呼び出しは、アクセススクリプト変数よりも時間がかかります。CollectionおよびDictionaryオブジェクトにアクセスするとき、この技法を使用することによって、高い検索動作も低減される。通常、オブジェクトデータに一度以上アクセスするには、スクリプト変数にデータを入れます。オブジェクトデータは主にRequest変数です。例えば、サイトがUserIDという照会文字列変数を渡す場合、特別ページで12回引用されると仮定すると、Request(「UserID」)を12回呼び出す必要はなく、ASPページの先頭にUserIDの変数が割り当てられ、ページでそれを使用すると、COMメソッドの11回の呼び出しが節約されます。任意の可能な時にServer.Transferを使用して、RedirectResonse.Redirectを使用しないでください。ブラウザに別のページを要求します。これはよくユーザをログインページまたはエラー処理ページに導くために使います。リダイレクトによって新しいページ要求が強制されたため、ブラウザはWebサーバと2回ループしなければならず、Webサーバは追加の要求を処理しなければならない。Server.Transferは同じサーバ上のページ転送を実行します。これは追加のブラウザ-Webサーバのデータ循環を回避し、良好なシステム性能を形成し、ユーザーにもより良い応答時間があります。もちろん、Server.Transferは相対パスのみをサポートします。