4

我在包含用户控件的页面上使用 Asp.net OutputCache,在某些情况下,当编辑用户控件时,我希望能够使页面缓存过期并使用新数据重新加载页面。

有什么办法可以从用户控件中做到这一点?

如果没有,还有哪些其他缓存页面的方法可以让我以这种方式进行编辑。

- - - - - - 编辑 - - - - - -

经过更多研究,我发现了一种似乎效果很好的方法。

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)

现在只要知道依赖缓存键,页面就可以过期。

4

3 回答 3

1

你可以试试这个:

private void RemoveButton_Click(object sender, System.EventArgs e)
{
    HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");
}

来自:http ://aspalliance.com/668

谢谢。

于 2009-01-26T23:09:02.533 回答
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 单独缓存它。

于 2011-02-25T12:55:29.673 回答
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)

现在只要知道依赖缓存键,页面就可以过期。

于 2009-12-09T04:07:26.170 回答