6

asp.net Webフォームプロジェクトでは、セッション、キャッシュ、およびプロファイルをよく使用します。データをセッション、キャッシュ、およびプロファイルにasp.net Webフォームプロジェクトに格納することがよくありますが、データをセッションに格納するタイミング、またはキャッシュとプロファイルに格納するタイミングを知りたいです。キャッシュまたはプロファイルのスコープは何ですか。この2つは、セッション固有のライフタイムまたはアプリケーション固有でもあります。

セッション1のデータをキャッシュまたはプロファイルに保存した場合、セッション2からそのデータにアクセスできるかどうかを考えてみます。セッション、キャッシュ、プロファイルにデータを保存する必要がある場合のシナリオと例を紹介します。ありがとう

4

1 に答える 1

14

通常、サイトのパフォーマンスを向上させたい場合に使用cacheします。データベース呼び出しの削減、ファイルシステム上のファイルへのアクセス、外部サービスの呼び出しなどです。

Scenario 1:データベースに保存されているすべての製品を一覧表示するページを持つアプリケーションがあるとします。ユーザーは製品リストのフィルタリング機能を必要としています(たとえば、ebayやamazonなど)。また、製品リストページの使用頻度と比較して、製品リストおよび製品機能がほとんど変更されていないことも知られています。

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

優れたリソースとして、 ASP.NETキャッシング:テクニックとベストプラクティスのMSDNの記事を読むことをお勧めします。


通常、profile具体的なユーザーに固有のデータを保存し、ユーザーがシステムにログインするたびに利用できるようにする必要があります。

Scenario 2:と同じアプリケーションを使用していると考えてください。Scenario 1ただし、ユーザーがフィルター設定(お気に入りのフィルターのリストの種類)を保存する機能を提供する必要があります。

Solution 2:一種のfilter-stateクラスを作成し、それをuserに格納できますprofile。その結果、ユーザーはフィルターパラメーターを何度も指定する必要がなくなり、ユーザーがログインするたびにこれらの設定を利用できるようになります。


SessionすべてのWebページからアクセスでき、次回ユーザーがログインするときに必要とならないユーザー固有の情報を格納するために使用されます。

Scenario 3:一部のeコマースアプリケーションがあり、マーケティング担当者がサイトで何が起こっているかをリアルタイムで確認したいとします。つまり、特定のユーザーがログイン中にアクセスしたページを確認します。このシナリオを選択したユーザーのアクティビティスナップショットと見なします。 。

Solution 3:ここでsessionは、ユーザーがアクセスしたURLをログに記録し、マーケティング担当者向けのレポートを生成するために使用できます。

状態管理については、別のMSDN記事ASP.NET状態管理の概要を参照することもできます。


asp.netアプリケーションの状態を管理しているオブジェクト間の違いを強調するもう1つの良い答え。


これが少しお役に立てば幸いです。

于 2013-02-05T20:09:13.493 に答える