1

我知道和之间的区别Cache.InsertCache.Add但是呢Cache["Key"] = "Value"

4

2 回答 2

3

根据Cache.Item财产的文件,没有区别

评论:

您可以使用此属性来检索指定缓存项的值,或者将项和它的键添加到缓存中。使用 Item 属性添加缓存项等效于调用该Cache.Insert方法。

(重点是我的)。

于 2013-09-18T01:51:23.823 回答
0

这是一个编写一个非常简单的包装器的示例(响应评论Cache.Insert("Key", "Value") 和 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 回答