我在包含usercontrol的页面上使用Asp.net OutputCache,在某些情况下,当编辑用户控件时,我希望能够使页面缓存失效并使用新数据重新加载页面。
我有什么办法可以在usercontrol中执行此操作吗?
如果没有,还有哪些其他缓存页面的方法可以让我以这种方式进行编辑。
-----------编辑-----------
经过一些研究后,我发现了一种似乎运作良好的方法。
Dim cachekey As String = String.Format("Calendar-{0}", calendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
Response.AddCacheItemDependency(cachekey)
将向页面缓存对象添加依赖项,然后到期我执行此操作:
Dim cachekey as string = String.Format("Calendar-{0}", CalendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
现在,只要知道依赖关系缓存密钥,就可以使页面过期。
答案 0 :(得分:1)
你可以试试这个:
private void RemoveButton_Click(object sender, System.EventArgs e)
{
HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");
}
感谢。
答案 1 :(得分:1)
您的解决方案对我不起作用。但是......经过一些测试后我得到了很好的工作。此代码将位于需要缓存的UserControl Page_Load中。
string key_refresh = "refresh_id_" + YourID;
Cache[key_refresh] = DateTime.Now.ToString();
CacheDependency dep = new CacheDependency(null, new string[] { key_refresh });
this.CachePolicy.Dependency = dep;
由于某些原因,当我从Response.AddCacheItemDependency
更新数据时,使用Cache[key_refresh]
没有任何效果。
在我的情况下,我按用户ID缓存我的控件,因此每个用户将拥有不同版本的此控件和不同的数据,我使用VaryByCustom单独缓存它。
答案 2 :(得分:0)
经过一些研究后,我发现了一种似乎运作良好的方法。
Dim cachekey As String = String.Format("Calendar-{0}", calendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
Response.AddCacheItemDependency(cachekey)
将向页面缓存对象添加依赖项,然后到期我执行此操作:
Dim cachekey as string = String.Format("Calendar-{0}", CalendarID)
HttpContext.Current.Cache.Insert(cachekey, DateTime.Now, Nothing, System.DateTime.MaxValue, System.TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, Nothing)
现在,只要知道依赖关系缓存密钥,就可以使页面过期。