ASPを少し大きく書いた人は、セッションが本当に便利であることを知っています。しかし、セッションの仕組みを本当に知っていますか?おそらくあなたが理解した後、あなたはこの恋愛オブジェクトを再び使用することを敢えてすることはありません。代替案に変更する方法は少し面倒ですが、長期的な考慮事項の後、私はそうしなければなりません。
まず、セッションの利点について話しましょう。セッションは、クライアントが個人所有するデータ変数を記録するために使用でき、時間範囲内で消滅しません。これは本当に重要な機能、特にメンバーとシステムが使用する必要がある機能です。たとえば、メンバーのログインアカウント、時間、ステータス、および記録された多くのリアルタイムデータ(ショッピングシステムがユーザーのショッピングバスケットの製品を記録するなど)、この情報は各ユーザーのプライベートニーズであり、通常は開発者は使用します。 IT。
ただし、ASPのセッションはCookieで構成されており、サーバーはセッションで記録されたすべての情報をCookieの形でユーザーのブラウザに送信します。通常、ブラウザはこれらのCookieを保存します。ユーザーがリンクをクリックしてサーバーに接続します。これは、データの量が多い場合、ラインの帯域幅を消費するだけでなく、サーバーがオンライン処理にもっとリソースを費やす必要があるためです。再構成メモリなど。初期アクション。今、あなたは「私はこの機能を使用しなければならないので、私は少し犠牲にしなければなりませんもちろん、代替品があります。
アプリケーションは、一時的なデータの記録と処理にも適しています。アプリケーションはセッションとは異なり、データをユーザーに渡さず、次回はオンラインで直接記録され、パフォーマンスはセッションよりもはるかに高速です。
アプリケーションオブジェクトは公開されているため、最初に行う必要があることは、各ユーザーの共通領域を計画して、各ユーザーがシミュレーションセッションの目的を達成するためにデータを記録する独自の領域を持つことです。今それを行うには2つの方法があります:
1.通常、サーバーがアクティブになったときにユーザーメモリスペースを事前に割り当てます。 。ただし、このメソッドを使用すると、最大数がアクティブ化されるとすぐに制限されている必要があります。チャットルームなどの小さなプログラム。
2。この方法は、大規模なアプリケーションに適している必要があります。これらの2つのシミュレートされたセッションソリューションの目的は、セッションリソースの消費を減らすことですが、それでもなおりがあるため、少なくとも多くの負担を減らすことができます。
■最初の計画
最初に、最初のソリューションの実装を開始します。アクティブ化されたときにアプリケーションを初期化するため、もちろんGlobal.asaから開始する必要があります。
初期化は完了しましたが、それを使用する方法は?アカウントやログイン時間などのセッションに保存されている情報を、作成したアプリケーションオブジェクトに変更する必要があります。ここで、ユーザーがログインします。
| '未使用のスペースを探しています i = 1へのアプリケーション(clientmax)の場合 アプリケーション(user_status_&i)= 0の場合 'ユーザーの一時番号 セッション(index)= i 'ロック Application Application.Lock '使用済み状態に設定します Application(user_status_&i)= 1 '変数データに入れます Application(user_account_&i)= account application(user_logtime_&i)= now() 'ロック解除 Application.UnLock の出口 ifを終了します 次 |
ユーザーに関連する変数データを取得するには、次のようなものです。
| respons.write(application(user_account_&session(index))) |
セッションを使用しないという意味ではないことがありますか?では、なぜ上記の元のコードにセッションが存在するのですか?前述のように、この代替案はセッションを完全に置き換えることはできません。現時点では、セッションに依存する必要があります。 。この方法にはいくつかの改善がありますが、小さなアプリケーションには十分です。
■2番目の計画
以前のソリューションに関しては、カスタマイズされた番号がセッションを使用して番号付けを録音していると考えることもできます。そうです、それを使用したいかどうかに関係なく、サーバーは各ユーザーが番号を割り当てるのに役立ちます。この番号は繰り返されません。この番号付けは、セッションが間違いなく行うアクションであるため、自分自身を書く番号付けプログラムを置き換えるために使用できます。しかし、基本的に、上記の最初のソリューションは、人の数やその他の小さなアプリケーションを制限するチャットルームなど、依然として有用です。
毎秒ウェブサイト上に数十万人、数万人、さらには何万人もの人々がいるウェブサイトであれば、以前のソリューションを使用していれば、それは間違いなく機能しません。 10,000人の上限を設定し、サーバーがアクティブ化されると、10,000人のユーザーに備えて10,000のエリアを切り取るのに役立ちます。サーバーがアクティブになると、320,000 K(320MB)を占めますあなた自身の512MBで十分であると思います。上記の数は最小数であると想定されています。したがって、解決策は、ユーザー変数スペースを動的に構成し、ユーザーがサーバーでオンラインであるときに領域をカットすることです。そのため、事前に巨大なメモリを構成する必要はありません。
2番目のソリューションは、Globalに移動する必要はありません。
| 'lock applicationApplication.Lock'変数データを配置します Application(user_account_&session.sessionId)= account application(user_logtime_&session.sessionid)= now() '' lonock nollock application.unlock |
ユーザーに関連する変数データを取得するには、次のようなものです。
| respons.write(application(user_account_&session.sessionid))) |
過去には、セッションはリソースを食べにくいと言った多くの本を読んだので、それらを使用しないようにしてください。今、あなたがセッションを交換する方法を理解したら、それをうまく利用してください!おそらく、常に問題を抱えている効率の問題は大幅に改善される可能性があります!