我知道和之间的区别Cache.Insert
,Cache.Add
但是呢Cache["Key"] = "Value"
?
问问题
3464 次
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 回答