我正在使用名为 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
并删除您的更改。
关于asp.net - 在运行时动态禁用/启用页面的输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967008/