2013-02-01 7 views
5

asp.net webformプロジェクトでセッション、キャッシュ、プロファイルを使用することがよくあります。セッション、キャッシュ、およびプロファイルのデータをasp.net webformプロジェクトに格納することがよくありますが、私はいつセッションにデータを保存すべきか、またはキャッシュとプロファイルに保存する必要があるかどうかを知りたいのです。キャッシュまたはプロファイルの範囲は何ですか?この2つのセッション固有のライフタイムまたはアプリケーション固有。asp.netのセッション、キャッシュ、プロファイルの違い

セッション1のキャッシュまたはプロファイルにデータを保存した場合、セッション2からそのデータにアクセスできるかどうかを考えます。セッション、キャッシュ、およびプロファイルにデータを保存する必要がある場合には、シナリオ&の例で私をガイドしてください。など外部サービスを呼び出して、ファイルシステム上のファイルにアクセスし、データベース呼び出しを減らす、

Scenario 1:感謝

+0

あなたはこれを見ましたか?http://forums.asp.net/t/983735.aspx –

答えて

14

サイトのパフォーマンスを向上させたいときは、一般的にcacheを使用するすべてのリストのページを持っているアプリケーションがあると仮定データベースに格納されている製品。ユーザーは製品リストのフィルタリング機能(eBayやamazonなど)の必要性があります。また、製品リストの使用頻度と比較して、製品や製品の機能のリストがまれに変化していることが知られています。

Solution 1:ここではcacheを使用してデータベース呼び出しを減らすことができます。 cacheに製品リストと製品機能を追加すると、メモリ内でフィルタリングを実行し、冗長なデータベース呼び出しを回避できます。 Cacheは、製品リストまたは機能が変更されたときに無効にする必要があります。このソリューションは、メモリ消費の処理がパフォーマンスの向上よりも安くなるまではOKです。

いいリソースとして、私はASP.NET Caching: Techniques and Best Practices MSDNの記事を読むことをお勧めします。 profile


あなたは一般的に、具体的なユーザーに固有のデータを保存し、システムへのたびにユーザーがログイン時に利用可能であるべきです。

Scenario 2Scenario 1と同じアプリケーションがあると考えていますが、ユーザーがフィルタ設定(お気に入りのフィルタの種類など)を保存できるようにする必要があります。

Solution 2:ある種のフィルタ状態クラスを作成し、ユーザprofileに保存することができます。その結果、ユーザーは何度も何度もフィルタパラメータを指定するには悩まされることはありませんし、これらの設定はで毎回ユーザーがログイン利用できるようになる。


SessionすべてのWebからアクセスできる可能性があり、ユーザー固有の情報を格納するために使用されますページに表示され、次回ユーザーがログインしたときには必要ありません。

Scenario 3:電子商取引のアプリケーションがあり、マーケティング担当者は、サイト上で何が起こっているのかをリアルタイムでリアルタイムで確認したいとします。このシナリオを選択されたユーザーのアクティビティスナップショットと見なしてください。

Solution 3:ここでは、sessionを使用して、ユーザーが訪問したURLを記録し、マーケティング担当者用のレポートを生成できます。

また、状態管理に関しては、別のMSDN記事ASP.NET State Management Overviewを参照することもできます。


Another good answerこれは、asp.netアプリケーション状態を管理しているオブジェクトの違いを示しています。


希望は少し助けました。

+0

プロファイルはセッション固有です...そうでなければ、別のセッションの1つのプロファイルデータにアクセスできます。サンプルコードでこれをガイドできますか? – Thomas

+1

@Thomasプロファイルは、セッション間で失われないように永続化できるユーザー固有のデータです。デフォルトのプロファイルプロバイダは、プロファイルデータをデータベースに格納します。 http://stackoverflow.com/questions/426609/how-to-assign-profile-valuesをご覧ください。この質問にはコードサンプルがあります。 –

関連する問題