1

私は、すべてのページがデータベースに保存されているデータのセットを使用するアプリケーションを持っています。データが必要になるたびにデータベースを呼び出さないようにするために、データをに入れることにしましたHttpRuntime.Cache。DBを呼び出し、このデータが使用される唯一の場所であるController.csファイルのコンストラクターにデータをキャッシュしています。

上記の方法は機能しますが、これがキャッシュをロードする正しい場所/方法であるかどうか疑問に思っていますか?

また、データはすべてのユーザーで同じであり、年に数回変更される可能性があります。

4

1 に答える 1

2

データをキャッシュすることと、キャッシュされたデータを使用することは、2 つの異なる問題です。データを取得するためのこのインターフェイスがあるとします。

public interface IDataRepository 
{
    List<Data> GetData();
}

データベースからデータを取得する実装と、必要に応じてプロキシとして機能し、データをキャッシュする実装の 2 つを実装できます。

public class DataRepository : IDataRepository
{
    public virtual List<Data> GetData()
    {
        //Hit the database and get the data
    }
}

public class CachedDataRepository : DataRepository, IDataRepository
{
    public override List<Data> GetData()
    {
        if(!IsCachedAlready())
        {
            var data = base.GetData();
            AddToCache(data);
        }

        return DataFromCache();
    }
}

同じインターフェイスを使用できるようになり、コントローラーで使用しているデータがキャッシュされているかどうかを気にする必要がなくなりました。

于 2012-07-02T02:31:23.803 に答える