我使用的是CMS系统,名称为Composite C1。它通过单页(Page.aspx)呈现所有内容,该页面附加了自定义输出缓存配置文件。
这一切都很好,但我遇到了一个问题。
我想要缓存,但是我想要禁用输出缓存的某些网址。
我知道我可以添加到缓存配置文件中的varybycustom属性,但我不认为这会给我我想要的内容。我希望能够在点击特定URL(或者某些其他条件)时完全禁用缓存。
这似乎非常棘手,因为每个页面/网址都通过单个Page.aspx文件呈现,并定义了outputcache配置文件。
有没有人对如何解决这个问题有任何建议?
答案 0 :(得分:1)
在\Global.asax
中,您会发现覆盖GetVaryByCustomString
,调用复合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
并擦除您的更改。
答案 1 :(得分:1)
您可以将以下代码插入不应缓存的页面上的函数。或者添加一个可以做到这一点的小函数:
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);