如何避免在chrome中返回304状态代码的请求?

时间:2012-03-02 08:03:42

标签: html http meta-tags cache-control

我有一个html页面,并添加一些这样的元标记:

<meta http-equiv="Cache-Control" Content="public" />
<meta http-equiv="Expires" Content="Mon, 08 Jun 2013 03:37:26 GMT" />

我的服务器是tomcat,在客户端浏览器中缓存此HTML页面之后,我关闭了我的tomcat。

然后我尝试在不同的浏览器中访问此HTML页面。

IE可以成功访问此页面,但Chrome失败。

然后我重新启动了我的tomcat,并在Chrome和IE中进行了测试。

我发现chrome仍然发送了返回304代码的请求,但是IE没有发送此请求。

那么如何在Chrome中避免此请求?

1 个答案:

答案 0 :(得分:0)

其实我不认为这是一个错误。 3xx表示重定向。真正的错误是4xx(客户端错误)和5xx(服务器错误)。

如果客户获得304 Not Modified,那么客户有责任从自己的缓存中显示有问题的资源。通常,代理不应该担心这一点。这只是信使。

catch (WebException ex)
{


    if (ex.Status == WebExceptionStatus.ProtocolError)
    {
        int statusCode = (int) ((HttpWebResponse) ex.Response).StatusCode;
        listenerContext.Response.StatusCode = statusCode;
        listenerContext.Response.StatusDescription = ex.Message;
        log("WARNING", uri, "WebException/ProtocolError: " + ex.GetType() + " - " + ex.Message);
    }
    else
    {
        log("ERROR", uri, "WebException - " + ex.GetType() + " - " + ex.Message);

    }

    listenerContext.Response.Close();
}