gpt4 book ai didi

asp.net - 有什么方法可以清除/刷新/删除OutputCache?

转载 作者:行者123 更新时间:2023-12-03 09:43:33 28 4
gpt4 key购买 nike

我在Webuser控件(.ascx)上使用OutputCache

<%@ OutputCache Duration="1000" VaryByParam="none" %>

我想在接下来的1000秒钟内保留缓存,但是当加载网站上的特定页面时,我想删除/刷新/刷新缓存。就像,我想在加载MyPage.aspx时清除缓存。我可以以编程方式刷新缓存吗?

它只有一页是高速缓存,因此没有参数化版本可以刷新高速缓存。

感谢您的帮助。

最佳答案

您可以为此使用 VaryByCustom 参数。

在用户控件中,您将具有以下内容:

<%@ OutputCache Duration="1000" VaryByParam="None" VaryByCustom="MyKey" %>

然后,您将像这样在Global.asax中覆盖 GetVaryByCustomString 方法:
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "MyKey")
{
object o = context.Current.Application["MyGuid"];
if (o == null)
{
o = Guid.NewGuid();
context.Current.Application["MyGuid"] = o;
}
return o.ToString();
}
return base.GetVaryByCustomString(context, arg);
}

最后,在 MyPage.aspx中,您可以这样做:
Application["MyGuid"] = Guid.NewGuid();

如何运作?

每当您的控件被缓存时,它就会与一个字符串相关联(当您的控件的 GetVaryByCustomString键传递给它时,从 VaryByCustom方法返回的字符串)。

每当随后使用该控件时,就会再次调用 GetVaryByCustomString。如果返回的字符串与控件的缓存版本匹配,则使用该缓存版本。

在我们的例子中,“MyKey”被传递到 GetVaryByCustomString中,并返回存储在 Application["MyGuid"]中的任何内容。

每当调用 MyPage.aspx时,它将 Application["MyGuid"]更改为新的随机值。

下次使用控件时, GetVaryByCustomString方法将返回新值,并且由于没有与该值关联的控件的缓存版本,因此将重新生成控件。 (然后,该控件将被缓存并与新值相关联,以保留到下一次调用 MyPage.aspx等时为止)

有一个概述 here

关于asp.net - 有什么方法可以清除/刷新/删除OutputCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/565239/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com