有问题地使 IIS 输出缓存无效
Problematically Invalidate the IIS Output Cache
我的内容通常是来自数据库的预渲染数据。所有页面加载一次并缓存。如果数据库中的数据发生变化,缓存应该对某些页面失效。
有没有办法以编程方式重置 IIS 输出缓存,例如单击按钮?
输出缓存有一些参数可用于处理缓存对象 VaryByParam
、VaryByControl
和 VaryByCustom
。
VaryByParam
根据请求的参数缓存对象,例如查询字符串值,如果是 POST / PostBack,则 POST / PostBack 值。
VaryByControl
根据 VaryByControl
属性中列出的控件的值缓存对象。
VaryByCustom
是一种为缓存机制设置自定义逻辑的方法。这是一个示例,说明它如何在您的场景中提供帮助。
您正在缓存的页面和控件中使用以下指令。注意 VaryByParam="none"
的使用。
<%@ OutputCache Duration="900" VaryByParam="none" VaryByCustom="somevariablename" %>
在您的 Global.asax
文件中添加以下函数:
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "somevariablename")
{
return GetCustomCacheIdentifier();
}
return base.GetVaryByCustomString(context, arg);
}
每次页面或控件有 OutputCache
指令时都会触发此函数。当 arg
参数设置为您在 VaryByCustom
中设置的值时,您可以 return 一些值。
如果值相同,IIS 将 return 页面的缓存版本,如果您 return 一个新值,页面将再次呈现。
例如,您可以 return 一个最初设置为 0 的计数器,并在数据库发生变化时递增该计数器。
我的内容通常是来自数据库的预渲染数据。所有页面加载一次并缓存。如果数据库中的数据发生变化,缓存应该对某些页面失效。
有没有办法以编程方式重置 IIS 输出缓存,例如单击按钮?
输出缓存有一些参数可用于处理缓存对象 VaryByParam
、VaryByControl
和 VaryByCustom
。
VaryByParam
根据请求的参数缓存对象,例如查询字符串值,如果是 POST / PostBack,则 POST / PostBack 值。
VaryByControl
根据 VaryByControl
属性中列出的控件的值缓存对象。
VaryByCustom
是一种为缓存机制设置自定义逻辑的方法。这是一个示例,说明它如何在您的场景中提供帮助。
您正在缓存的页面和控件中使用以下指令。注意 VaryByParam="none"
的使用。
<%@ OutputCache Duration="900" VaryByParam="none" VaryByCustom="somevariablename" %>
在您的 Global.asax
文件中添加以下函数:
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "somevariablename")
{
return GetCustomCacheIdentifier();
}
return base.GetVaryByCustomString(context, arg);
}
每次页面或控件有 OutputCache
指令时都会触发此函数。当 arg
参数设置为您在 VaryByCustom
中设置的值时,您可以 return 一些值。
如果值相同,IIS 将 return 页面的缓存版本,如果您 return 一个新值,页面将再次呈现。
例如,您可以 return 一个最初设置为 0 的计数器,并在数据库发生变化时递增该计数器。