当使用varybycustom for multitenant app时,如何从输出缓存中逐出?

时间:2013-11-29 15:06:23

标签: asp.net-mvc caching azure azure-web-roles

我有一个在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键。

任何人都可以了解我在需要时如何逐出这个缓存的内容吗?

提前致谢。

0 个答案:

没有答案