ホームページ バックエンド開発 C#.Net チュートリアル ASPにおけるSessionの使い方スキルを詳しく解説

ASPにおけるSessionの使い方スキルを詳しく解説

May 18, 2017 am 11:38 AM

少し大きめの ASP を書いたことがある人なら、Session オブジェクトが非常に使いやすく、安全で便利なユーザーのプライベート データ変数を記録できることを知っています。しかし、セッションがどのように機能するかを本当に知っていますか?

少し大規模な ASP を作成したことがある人なら、Session オブジェクトが非常に使いやすく、安全で便利なユーザーのプライベート データ変数を記録できることを知っています。しかし、セッションがどのように機能するかを本当に知っていますか?おそらく、それを理解した後は、この愛され嫌われている物体をあえて使用することはなくなるでしょう。代替方法は少し面倒ですが、長期的な検討の結果、これを実行する必要があります。まず、クライアントのプライベート データ変数を記録し、長期的に保存できるセッションの利点について説明します。範囲内では消えません。これは、特に使用する必要があるメンバーを含むシステムにとって、非常に重要な機能です。メンバーのログイン アカウント、時刻、
ステータス
、および記録すべき多くのリアルタイム データ (ユーザーのショッピング バスケット内の商品を記録するショッピング システムなど) など、この情報は各ユーザー、通常は開発者によって個人的に必要とされます。これはセッション レコードを使用して処理されます。 しかし、ASPにおけるセッションは
Cookie
で構成されており、サーバーはセッションに記録されたすべてのデータをCookieの形式でユーザーのブラウザに送信します。通常、ブラウザはこれらの Cookie を保存し、ユーザーがリンクをクリックしてサーバーに再度接続するたびに、これらの Cookie を処理のためにサーバーに送り返します。これはセッションの動作原理であり、データ量が多くなると、データの送信と返却が必要になるため、回線帯域を消費するだけでなく、サーバーがオンライン処理やメモリの再構成に多くのリソースを費やす必要があるため、パフォーマンスが低下します。 . 最初のアクション。 「この機能を使用する必要があるので、それを犠牲にしなければならない」と考えているかもしれませんが、この記事では、一方ではセッションの使用を減らすことを皆さんに教えています。次に考えられるのは、これも Global.asa アプリケーション オブジェクトに属するということです。 アプリケーションは一時データの記録と処理にも優れています。その機能と使用方法はセッションと同じですが、比較すると、記録されるデータはパブリック、つまり任意のユーザーが共有できる変数空間です。セッションとは異なり、アプリケーションはユーザーにデータを転送せず、次の接続後にデータをサーバー上のメモリに直接記録します。これに比べて、パフォーマンスはセッションよりもはるかに高速です。

Application オブジェクトはパブリックであるため、セッションをシミュレートするという目的を達成するために、最初に行う必要があるのは、各ユーザーがデータを記録するための独自の領域を持つことができるように、各ユーザーの共通領域を計画することです。現在、2 つの方法があります:

1. サーバーの起動時に、事前にユーザー メモリ領域を初期化、作成、割り当てます。通常、この方法はサーバーの起動直後に多くのリソースを占有しますが、その必要性も節約します。今後ユーザーが接続するたびに追加のリソースが必要になるため、配布を行う必要があります。ただし、この方法には最大人数を制限する必要があり、起動するとすぐに初期化されるため、一定量のメモリ領域の作成しか見積もることができないため、この方法は通常、小規模なプログラムで使用されます。チャットルームなど。

第二に、この方法は大規模なアプリケーションに適していると考えられ、動的割り当て方法が採用されており、ユーザーが最初にサーバーに接続したときにユーザーへのリソースの割り当てが開始されます。セッションをシミュレートするこれら 2 つの方法の目的は、セッション リソースの消費を減らすことですが、結局のところ、これらを完全に置き換えることはできません。それでも、セッションを少し使用する必要があります。これにより、少なくとも、セッションの負荷を大幅に軽減できます。サーバ。

第一計画

まず、第一計画の実装を開始します。アクティベーション中にアプリケーションが初期化されるので、当然、Global.asaから開始する必要があります:

初期化は完了しましたが、使い方は次のとおりです。それ?アカウント番号やログイン時間など、セッションを使用して元々保存されていたデータを、ユーザーがログインする場所で作成したアプリケーション オブジェクトに変更するだけです:


コードは次のとおりです:

'
寻找未被使用的空间 
For
 i = 1 To Application("ClientMax") 
If
 Application("User_Status_" & i) = 0 Then 
'使用者暂时编号 
Session("Index") = i 
'锁定 
Application Application.Lock 
'设成已使用的状态 Application("User_Status_" & i) = 1 '放入变量数据 
Application("User_Ac
count
_" & i) = Account 
Application("User_Log
time
_" & i) = Now()
'解除锁定 
Application.Unlock 
Exit For 
End
 If 
Next
ログイン後にコピー


ユーザー関連の変数データを取得するには、次のようにするだけです:

Response.Write(Application("User_Account_" & Session("Index"))

Session を使用しないとは言っていないことがわかるかもしれません。では、なぜ上記のソースコードにセッションが存在するのでしょうか? 前述したように、この代替案はセッションを完全に置き換えることはできず、同じ人が次回接続していることをどのようにして知ることができるのでしょうか?このとき、私たちはセッションに依存する必要があります。この数値は、銀行の金庫のようなものです。キーを持っていて、キーに番号が付いているので、店員が自分の金庫に誘導できます。ただし、小規模な用途には十分です。 2 番目のオプション

前のオプションと同様に、数値に関して言えば、Session オブジェクトは、それを使用するかどうかに関係なく、「SessionID」メソッドを提供します。 、サーバーは各ユーザーに番号を自動的に割り当てます。この番号は、Session.SessionID を使用して取得されます。これは、Session が行うアクションであり、代わりに使用できます。私たちが自分たちで作成した番号付けプログラムも、多くの労力を節約し、さらに拡張性が高くなります。ただし、基本的には、上記の最初のソリューションには、人数を制限するアプリケーションなど、まだ用途があります。次の 2 番目の代替案は、より大きな規模向けです。 1 秒あたり数百人、数千人、さらには数万人のユーザーがいる Web サイトの場合、ユーザー数の上限を 10,000 人に設定すると、これが役に立ちます。 10,000 ユーザーに対して 10,000 の領域を切り出すと、1 つの領域に 5 つの変数があり、各変数が 32 バイト (Byte) を占有する場合、10,000 個のメモリがすぐに 320000 K (320MB) 以上を占有します。サーバーがアクティブ化されると、戦場に行く前にパフォーマンスが大幅に低下することは間違いありません。これらの数値は小さいですが、上記の数値は最小値を想定したものであり、それは不明です。メモリを構成するときにサーバーが使用する追加リソースの数は増加するだけであり、減少することはありません。したがって、唯一の解決策は、ユーザーがサーバーに接続しているときにのみ領域を切り取ることです。そのため、事前に巨大なメモリを構成する必要はありません。

2 番目のオプションは実装が比較的簡単です。最初のオプションのすべてを破棄してください。Global.asa に移動する必要はありません。ユーザーのログイン場所とその他の便利な場所を変更するだけです。コードは次のとおりです:

'锁定 ApplicationApplication.Lock '放入变量数据 
Application("User_Account_" & Session.SessionID) = Account 
Application("User_Logtime_" & Session.SessionID) = Now() '解除锁定Application.Unlock
ログイン後にコピー

ユーザーの関連変数データを取得するには、次のように実行します:
コードは次のとおりです:
Response.Write(Application("User_Account_" & Session.SessionID))
ログイン後にコピー

【関連推奨事項】

1.

ASP 無料ビデオチュートリアル


2.

ASPセッションの簡単な例

3.

ASPのセッションについて詳しく紹介

4.

ASPセッションの損失の問題を解決する方法を説明します

5. ASPのSessionオブジェクトの3つのメソッドを紹介します

以上がASPにおけるSessionの使い方スキルを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SpringBootセッションでセッションタイムアウトを設定する方法 SpringBootセッションでセッションタイムアウトを設定する方法 May 15, 2023 pm 02:37 PM

Springboot プロジェクトの本番環境のセッションアウト タイムアウトで問題が見つかりました。問題の説明は次のとおりです: テスト環境では、application.yaml を変更することでセッションアウトが構成されていました。別の時間を設定してセッションアウト構成を確認した後、有効期限がリリース時に直接 8 時間に設定され、運用環境に到着しました。しかし、正午にお客様から、プロジェクトの有効期限が短く設定されており、30分操作がないとセッションが期限切れになり、再度ログインが必要になるというフィードバックをいただきました。開発環境の扱いの問題を解決します。springboot プロジェクトには Tomcat が組み込まれているため、プロジェクト内の application.yaml で設定されたセッションアウトが有効になります。本番環境: 本番環境リリースは

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

更新後にPHPセッションが消えた場合はどうすればよいですか? 更新後にPHPセッションが消えた場合はどうすればよいですか? Jan 18, 2023 pm 01:39 PM

更新後に PHP セッションが消える問題の解決策: 1. 「session_start();」を通じてセッションを開きます; 2. すべてのパブリック設定を PHP ファイルに書き込みます; 3. 変数名は配列の添字と同じにすることはできません。 4. phpinfoでセッションデータの保存パスを確認し、ファイルディレクトリ内のsessioが正常に保存されているか確認してください。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

セッションphpのデフォルトの有効期限は何時間ですか? セッションphpのデフォルトの有効期限は何時間ですか? Nov 01, 2022 am 09:14 AM

セッション PHP のデフォルトの有効期限は 1440 秒、つまり 24 分です。つまり、クライアントが 24 分を超えて更新されない場合、現在のセッションは期限切れになります。ユーザーがブラウザを閉じると、セッションは終了し、セッションは存在しなくなります。

Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Jun 03, 2023 pm 03:11 PM

1. セッションに基づく SMS ログインの実装 1.1 SMS ログインのフローチャート 1.2 SMS 検証コード送信の実装 フロントエンド リクエストの説明: リクエスト メソッドの説明 POST リクエスト パス /user/code リクエスト パラメータ 電話 (電話番号) 戻り値 バックエンド インターフェイスなし実装: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1。次の場合は携帯電話番号を確認します。

Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 May 22, 2023 pm 01:49 PM

問題: 今日、プロジェクトで設定タイムアウトの問題が発生し、SpringBoot2 の application.properties への変更が反映されませんでした。解決策:server.* プロパティは、SpringBoot によって使用される埋め込みコンテナーを制御するために使用されます。 SpringBoot は、ServletWebServerFactory インスタンスの 1 つを使用してサーブレット コンテナのインスタンスを作成します。これらのクラスは、server.* プロパティを使用して、制御されるサーブレット コンテナ (tomcat、jetty など) を構成します。アプリケーションが war ファイルとして Tomcat インスタンスにデプロイされる場合、server.* プロパティは適用されません。それらは当てはまりませんが、

JavaScript Cookie と PHP Cookie の違いは何ですか? JavaScript Cookie と PHP Cookie の違いは何ですか? Sep 02, 2023 pm 12:29 PM

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、

See all articles