2

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

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

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

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

4

2 回答 2

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 时,您就不会添加这些标题。

于 2013-05-18T10:04:03.447 回答
0

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

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

    }
于 2013-05-18T11:35:00.000 回答