如果我有一个带有outputcaching的页面(我们称之为Employees.aspx),它接受一个名为 Company 的参数(通过查询字符串),如下所示:
http://www.example.com/Employees.aspx?Company=Google
如何避免不同类型的网址重复页面缓存条目,例如:
http://www.example.com/Employees.aspx?Company=GOOGLE http://www.example.com/Employees.aspx?Company=GOoGlE
我通过OuputCaching指令启用了输出缓存,如下所示:
<%@ OutputCache Duration="300" VaryByParam="Company" %>
有没有办法以编程方式设置此特定请求的“唯一缓存密钥”应该是
答案 0 :(得分:3)
这样做的一种hack-esque方法是做一个VaryByCustom(而不是VaryByParam)并在那里做.ToLower / .ToUpper。
将OutputCache指令更改为以下内容:
<%@ OutputCache Duration="300" VaryByCustom="Company" VaryByParam="none" %>
...并在Global.asax.cs中为GetVaryByCustomString添加覆盖:
public override string GetVaryByCustomString(System.Web.HttpContext context, string custom)
{
string CustomValue = "";
switch (custom.ToLower())
{
case "company":
CustomValue = context.Request.QueryString["company"] ?? "";
CustomValue = CustomValue.ToLower();
break;
}
return CustomValue;
}