1

MVC アプリケーションにデータを格納するために、ObjectCache のMemoryCache.Defaultインスタンスを使用します。アイテムを保存してすぐに読み取るたびに、アイテムが期待どおりに保存されていることがわかります.しかし、キャッシングクラスの新しいインスタンス(ObjectCacheを使用したクラスを意味します)が作成されると、古い値にアクセスできません.保持するためのシングルトンのみを実装しましたObjectCache の 1 つのインスタンスですが、これは役に立ちません。

//here is single instance of caching object
public class CacheSingleton
{
    private static CacheSingleton instance;

    private CacheSingleton() { cache = MemoryCache.Default; }

    public static CacheSingleton Instance
    {
        get 
        {
            if (instance == null)
            {
                instance = new CacheSingleton();
            }
            return instance;
        }
    }

    public ObjectCache cache { get; private set; }
}


    // and here is piece of caching class 
    .........
    private ObjectCache cache;


    public DefaultCacheProvider()
    {
        cache = CacheSingleton.Instance.cache;
    }

    public object Get(string key)
    {
        return cache[key];
    }

    public void Set(string key, object data, int cacheTime, bool isAbsoluteExpiration)
    {
        CacheItemPolicy policy = new CacheItemPolicy();
        if (isAbsoluteExpiration)
        {
            policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime);
        }
        else
        {
            policy.SlidingExpiration = TimeSpan.FromMinutes(cacheTime);
        }

        cache.Add(new CacheItem(key, data), policy);
    }

    public bool IsSet(string key)
    {
        return (cache[key] != null);
    }

    public void Invalidate(string key)
    {
        cache.Remove(key);
    }

キャッシング クラス (最後のコード) のすべての新しいインスタンスで古い値にアクセスできない理由を誰でも説明できますか?ありがとう。

4

0 に答える 0