C# 如果存在特定URL参数,则排除缓存

C# 如果存在特定URL参数,则排除缓存,c#,asp.net,C#,Asp.net,我在.aspx页面(ASP.NET 4)中使用缓存,如下所示: <%@ OutputCache Duration="100000" VaryByParam="CategoryID" %> 一切都很好,直到页面url有traceid我才需要使用任何缓存 那么,当URL参数中存在“traceid”时,有没有办法排除缓存? 有什么建议吗 if(Requesq.QueryString["trace_id"]== null) { Response.AddHeader("Cac

我在.aspx页面(ASP.NET 4)中使用缓存,如下所示:

<%@ OutputCache Duration="100000" VaryByParam="CategoryID" %>

一切都很好,直到页面url有
traceid
我才需要使用任何缓存

那么,当URL参数中存在“traceid”时,有没有办法排除缓存? 有什么建议吗

 if(Requesq.QueryString["trace_id"]== null)
 {
    Response.AddHeader("Cache-Control", "max-age=86400");
    //and any other header that may be needed to instruct a browser that it should cache the response
    Response.AddHeader("Vary",...
 }

我会启动Chrome中的开发者工具(点击F12),分析当前页面上发送的所有响应标题,并将其用作每个响应上需要设置的标题的示例。这样,当查询字符串中包含跟踪id时,就不会添加这些标题。

我还发现了一些对我有用的东西:

protected override void OnPreInit(EventArgs e)
    {
        if (HttpContext.Current.Request.QueryString.AllKeys.Contains("traceid"))
            HttpContext.Current.Response.CacheControl = "no-cache";
        base.OnPreInit(e);

    }

您不能通过OutputCache指令执行此操作。你必须完全在代码上实现它。@Icarus好的,我怎么能做到?有什么建议吗?通过设置适当的响应头,这与OutputCache指令所做的完全相同。我是用手机写的,所以很难写出完整的工作示例,但我会提供伪代码。。。