1
 private Obj CacheSomething()
    {
       Obj retVal = (Obj)System.Web.HttpRuntime.Cache["key"];

        if (retVal == null)
        {
            retVal = new Obj();
            System.Web.HttpRuntime.Cache["key"] = retVal;
        }
        return retVal;
    }

これはおそらくばかげた質問ですが、サーバーメモリまたはクライアントメモリに保存されていますか?

また、上記を実行することとシングルトンを使用することの違いは何ですか?

例えば:

myObj= GenericSingleton<Obj>.GetInstance();

myObj= CacheSomething();

毎回新しいオブジェクトを宣言すると、明らかに時間がかかりますが、上記の両方のメソッドは、キャッシュせず、シングルトンを使用しないよりも高速です。基本的にシングルトンキャッシングを使用していますか?

4

3 に答える 3

4

サーバーにキャッシュされます。最も重要な違いは、メモリ不足のため、または挿入時に有効期限または依存関係情報を指定したために、アイテムがキャッシュから削除される可能性があることです。

于 2012-12-10T16:19:27.570 に答える
1
  1. System.Web.HttpRuntime.Cacheサーバー側です。

  2. パターンを使用するSingleton場合、通常、シングルトンインスタンスが存在することを期待するコードを記述します。キャッシュされたアイテムを使用すると、その存在に依存することはできず、それに応じてコードを記述する必要があります。たとえば、retVal作成に時間とリソースを消費する場合は、lock他のスレッドが同じ作業を実行しないようにする必要があります。

于 2012-12-10T16:22:35.757 に答える
0

サーバーにキャッシュされます。クラスマニュアルから:

このクラスのインスタンスはアプリケーションドメインごとに1つ作成され、アプリケーションドメインがアクティブである限り有効です。このクラスのインスタンスに関する情報は、HttpContextオブジェクトのCacheプロパティまたはPageオブジェクトのCacheプロパティから入手できます。

あなたはここでそれを見つけることができます:キャッシュクラス

于 2012-12-10T16:22:30.897 に答える