我有一个在Azure Web Worker Roles上运行的应用程序,并且使用共存角色缓存作为默认输出缓存。
我还使用varybycustom,以便我可以部分缓存具有可缓存区域的页面。
所以在我的主页上我有这个:
<div id="collectionsheader">
@Html.Action("Header", new{ controller = "Collections", area="Dam" })
</div>
指的是这个动作:
[OutputCache(Duration = 3600, VaryByCustom = "host")]
public ActionResult Header()
{
...
}
varybycustom是这样的,在这个多租户应用程序中,每个访问应用程序的子域都会更改缓存输出。这是在Global.ascx:
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg == "host")
{
return context.Request.Headers["host"];
}
}
所以这是问题 当我需要强制刷新此项时,如何逐个每个域删除此内容。
目前我这样做:
var urlToRemove = url.Action("Header", "Collections");
if (urlToRemove != null) HttpResponse.RemoveOutputCacheItem(urlToRemove);
但这不起作用,我确信这是因为VaryByCustom键。
任何人都可以了解我在需要时如何逐出这个缓存的内容吗?
提前致谢。