2

最近、ASP.NET でのキャッシュの可能性を調査しています。

私は自分の「キャッシュ」を転がしました。これ以上よくわからなかったので、次のように見えました。

public class DataManager
{

      private static DataManager s_instance;

      public static DataManager GetInstance()
      {
      }

      private Data[] m_myData;
      private DataTime m_cacheTime;

      public Data[] GetData()
      {
            TimeSpan span = DateTime.Now.Substract(m_cacheTime);

            if(span.TotalSeconds > 10)
            {
                  // Do SQL to get data
                  m_myData = data;
                  m_cacheTime = DateTime.Now;
                  return m_myData;     
            }
            else
            {
                  return m_myData;
            }
      }

}

したがって、値はシングルトンにしばらく保存され、時間が経過すると値が更新されます。時間が経過しておらず、データのリクエストが完了すると、フィールドに格納された値が返されます。

これの代わりに実際の方法 ( http://msdn.microsoft.com/en-us/library/aa478965.aspx )を使用する利点は何ですか?

4

3 に答える 3

4

「コンピューターに任せて、あなたよりも賢い」という格言がここに当てはまると思います。メモリ管理やその他の複雑なことと同じように、コンピューターは自分が何をしているのかについて、あなたよりもはるかに多くの情報を持っています。その結果、あなたよりも多くのパフォーマンスを得ることができます。

Microsoft はそれに取り組んでいるエンジニアのチームを持っており、彼らはおそらくあなたができるよりもはるかに多くのパフォーマンスをシステムから引き出すことに成功したでしょう. また、ASP.NET の組み込みキャッシュが別のレベル (アプリケーションからアクセスできない) で動作し、はるかに高速になる可能性があります。

于 2008-08-14T14:52:54.267 に答える
2

ASP.NET キャッシュ メカニズムはしばらく前から存在しているため、安定しており、よく理解されています。最大限に活用するためのリソースがたくさんあります。

要件によっては、独自のロールが適切なソリューションになる場合があります。

キャッシングで難しいのは、いつ、何を安全にキャッシュできるかを選択することです。データが頻繁に変更されるアプリケーションの場合、キャッシングによってトラブルシューティングが困難なバグが発生する可能性があるため、注意してください。

于 2008-08-14T14:55:42.777 に答える
1

ASP.NET のキャッシュは機能が豊富で、非常に細かい方法でキャッシュを構成できます。

あなたの場合 (データ キャッシング) で見逃している機能の 1 つは、SQL サーバー上のデータが何らかの方法で更新された場合にキャッシュを無効にして更新する機能です (SQL キャッシュの依存関係)。

http://msdn.microsoft.com/en-us/library/ms178604.aspx

于 2008-08-14T14:57:32.727 に答える