我想有在ASP.NET CacheObject,這好像是改變了一些相關的項目將被刪除CacheDependancy多個緩存項
所以一個項目。在請求
- 如果提示,它存在於緩存中刪除根對象,所有的依賴也將被刪除
- 檢查緩存中的根對象,如果它不存在,添加它
- 添加其他對象與高速緩存依賴於根對象
當我這樣做,我得到一個錯誤「An attempt was made to reference a CacheDependency object from more than one Cache entry
」
我看到,你可以做一個AggregateCacheDependency許多依賴應用到一個緩存項,但似乎你不能這樣做的其他方式。
有沒有人找到一種方法來做到這一點?
這裏是一些代碼,它不是我實際存儲,但它代表着相同的任務
public class HomeController : Controller
{
private const string ROOT_KEY = "ROOT";
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if(Request.QueryString["clearcache"]!=null){
// removed the root, hopefully removing all dependents
HttpContext.Cache.Remove(ROOT_KEY);
}
if (HttpContext.Cache[ROOT_KEY] == null)
{
// create the root entry
HttpContext.Cache[ROOT_KEY] = string.Empty;
}
if(HttpContext.Cache[Request.Url.AbsolutePath]==null){
// add the url if not already added
HttpContext.Cache.Insert(
Request.Url.AbsolutePath, string.Empty,
new CacheDependency(null, new []{ROOT_KEY}));
}
}
}
你可以發佈一些示例代碼 – Adeel 2010-07-14 09:38:20
您是否嘗試過使用自定義類(卸妝)引用其他緩存項目?通過dep從緩存中刪除Remover時,還可以刪除所有引用的緩存對象。 – 2010-07-14 10:09:41