asp.net - 在运行时动态禁用/启用页面的输出缓存

标签 asp.net caching outputcache c1-cms

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

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

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

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

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

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

最佳答案

\Global.asax 中,您会发现 GetVaryByCustomString 的重写,它调用 Composite C1 来评估是否应缓存响应。您可以对此进行干预,并且仅当请求不是针对您不希望缓存的网址之一时才调用 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

关于asp.net - 在运行时动态禁用/启用页面的输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967008/

相关文章:

asp.net - 基于 ASP.NET 的 Slim 门户框架

iphone - 离线时无法在具有缓存 list 的移动 Safari 中工作

caching - 停止 EPiServer 在发布时清除输出缓存

asp.net - 如何查看 ASP.NET OutputCache 的内容?

c# - 将信息记录到 azure webjobs 日志文件中?

asp.net - 如何删除特定页面中的 cookie?

c# - 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

java - Apache Ignite 中的二进制编码器

javascript - 记住用户是否关闭了 div

asp.net-mvc - 如何从另一个 Controller 使 Web API 缓存失效(ASP.NET Web API CacheOutput Library)