1

Cache.Insertとの違いはわかりますCache.Addが、 はどうCache["Key"] = "Value"でしょうか。

4

2 に答える 2

0

以下は、非常に単純なラッパーを作成する例です (コメントIs there any difference between Cache.Insert("Key", "Value") and Cache["Key"] = "Value"? ) に応答して、次の場合にデフォルトを設定します。インデックス メソッドを使用してアイテムをキャッシュに追加します。これは非常に基本的なことです。

public class CacheHandler
{
    /// <summary>
    /// static cache dependencies
    /// </summary>
    readonly static CacheDependency dependecies = null;
    /// <summary>
    /// sliding expiration
    /// </summary>
    readonly static TimeSpan slidingExpiration = TimeSpan.FromMinutes(5);

    /// <summary>
    /// absolute expiration
    /// </summary>
    readonly static DateTime absoluteExpiration = System.Web.Caching.Cache.NoAbsoluteExpiration;

    /// <summary>
    /// private singleton 
    /// </summary>
    static CacheHandler handler;

    /// <summary>
    /// gets the current cache handler
    /// </summary>
    public static CacheHandler Current { get { return handler ?? (handler = new CacheHandler()); } }

    /// <summary>
    /// private constructor
    /// </summary>
    private CacheHandler() { }

    /// <summary>
    /// Gets \ Sets objects from the cache. Setting the object will use the default settings above
    /// </summary>
    /// <param name="key">the cache key</param>
    /// <returns>the object stored in the cache</returns>
    public object this[string key]
    {
        get
        {
            if (HttpContext.Current == null)
                throw new Exception("The current HTTP context is unavailable. Unable to read cached objects.");
            return HttpContext.Current.Cache[key];
        }
        set
        {
            if (HttpContext.Current == null)
                throw new Exception("The current HTTP context is unavailable. Unable to set the cache object.");
            HttpContext.Current.Cache.Insert(key, value, dependecies, absoluteExpiration , slidingExpiration);
        }
    }

    /// <summary>
    /// the current HTTP context
    /// </summary>
    public Cache Context
    {
        get
        {
            if (HttpContext.Current == null)
                throw new Exception("The current HTTP context is unavailable. Unable to retrive the cache context.");
            return HttpContext.Current.Cache;
        }
    }
}

繰り返しますが、これは非常に単純で基本的なものですが、キャッシュを挿入するために別のサービスを呼び出す必要があります。

protected void Page_Load(object sender, EventArgs e)
{
    CacheHandler.Current["abc"] = "123";
}

アプリケーションを開始したばかりの場合は、ASP.Net ページの Cache プロパティを新しいキャッシュ ハンドラに置き換えることができます。

public partial class BasePage : Page
{
    protected new CacheHandler Cache
    {
        get { return CacheHandler.Current; }
    }
}

次に、すべてのページを次のように変更できます。

public partial class _Default : **BasePage**
{
}

そして、キャッシュハンドラーを呼び出すのは簡単です

protected void Page_Load(object sender, EventArgs e)
{
    Cache["abc"] = "123";
}

これは、デフォルトの Cache オブジェクトの代わりにキャッシュ ハンドラーになります。

これらは単なるオプションであり、アプリケーション内でキャッシングをどのように処理したいか、またこれが本当に努力する価値があるかどうかは、あなた次第です。

乾杯。

于 2013-09-18T02:22:54.410 に答える