2

我正在使用一个名为 Composite C1 的 CMS 系统。它通过单个页面 (Page.aspx) 呈现所有内容,该页面附加了自定义输出缓存配置文件。

这一切都很好,但我遇到了一个问题。

我想要缓存,但是我想禁用某些 URL 的输出缓存。

我知道可以添加到缓存配置文件中的 varybycustom 属性,但我认为这不会给我我想要的东西。我希望能够在点击特定 URL(或者可能是其他一些条件)时完全禁用缓存。

这似乎非常棘手,因为每个页面/url 都通过定义了 outputcache 配置文件的单个 Page.aspx 文件呈现。

有人对我如何解决这个问题有任何建议吗?

4

2 回答 2

1

\Global.asax您将找到对GetVaryByCustomStringComposite C1 调用的覆盖,以评估是否应缓存响应。您可以进行干预,并且仅在请求不是针对您不希望缓存的 URL 之一时才调用 Composite:

if (context.Request.Url.AbsolutePath != "/dont-cache-this")
{
    return ApplicationLevelEventHandlers.GetVaryByCustomString(context, custom) ?? base.GetVaryByCustomString(context, custom);
}

return null;

请注意,稍后升级 Composite C1 可能会替换\Global.asax和擦除您的更改。

另请参阅http://msdn.microsoft.com/en-us/library/5ecf4420.aspx

于 2013-09-27T21:37:33.517 回答
1

您可以将以下代码插入到不应缓存的页面上的函数中。或者添加一个可以做到这一点的小函数:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);

于 2015-10-27T18:06:38.510 回答