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

时间:2013-05-18 09:14:20

标签: c# asp.net

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

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

一切都很好,直到页面网址为traceid我才需要使用任何缓存。

当有&#39; traceid&#39;有什么方法可以排除缓存。存在于URL参数中? 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

 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)并分析当前页面上发送的所有响应标头,并将其用作您需要在每个响应上设置的标头的示例。这样,当查询字符串中包含trace_id时,您不会添加这些标头。

答案 1 :(得分:0)

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

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

    }