我有我想使用OutputCache指令缓存的页面。但是,我正在使用URL重写器模块来在此页面上定向多个URL,每个URL都有不同的内容。基于URL更改OutputCache
有什么办法可以使用缓存每个URL的输出?没有其他标准需要我改变缓存结果。
我有我想使用OutputCache指令缓存的页面。但是,我正在使用URL重写器模块来在此页面上定向多个URL,每个URL都有不同的内容。基于URL更改OutputCache
有什么办法可以使用缓存每个URL的输出?没有其他标准需要我改变缓存结果。
这到底是相当简单的修复。
将以下指令添加到需要被缓存的页面:
<%@输出缓存持续时间= “600” 位置= “下游” 的VaryByParam = “无” VaryByCustom是= “RawURL” %>
此方法添加到Global.asax文件
public override string GetVaryByCustomString(HttpContext context, string custom)
{
switch (custom.ToUpper())
{
case "RAWURL":
return context.Request.RawUrl;
default:
return "";
}
}
以编程方式,您可以使用Response.Cache来设置缓存选项。您可以打开查询字符串变量并根据具体情况适当地设置Response.Cache上的属性。
MSDN on Cache object
Another helpful article from aspalliance.com
我也可以改变CAC他基于请求头,但是这些不会改变,并且没有使用查询字符串变量 – Blatfrig 2009-11-25 09:15:15
这很聪明......但它仍然返回一个200而不是304(未修改),就像使用非路由URL一样。因此,虽然它可能不会再次生成页面,但客户端仍然必须重新获取它,而不是使用本地缓存。仍然是个好问题。 – harpo 2011-04-06 06:38:00