在Tomcat中防止304 NOT MODIFIED响应

时间:2015-12-23 08:38:24

标签: http tomcat servlets caching servlet-filters

如果资源(index.html)已经缓存在客户端中,例如使用响应头:

"Cache-Control": "max-age=0, must-revalidate, proxy-revalidate"

如何阻止tomcat通过下一个请求中的304 Not Modified响应服务器?我想强制服务器响应200而不是304,无论如何。 我试着设置

httpResp.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, proxy-revalidate");
httpResp.setHeader("Pragma", "no-cache");
httpResp.setHeader("Expires", "0");

但它只适用于SECOND请求。第一个请求仍然是304。 我尝试使用if-modified-since使用过去的值覆盖HttpServletRequestWrapper标头,例如Mon, 06 Dec 2010 01:34:46 GMT但没有运气 - 尽管文件在2015年已修改,但客户端仍然获得304回复。 有什么方法可以阻止304回复吗?也许通过tomcat配置?

1 个答案:

答案 0 :(得分:0)

不确定这是否会有所帮助,但您可以尝试以下方法 -

  1. 删除浏览器缓存以从头开始并测试这是否有效

  2. 改编自另一个ServerFault问题 -

  3. https://serverfault.com/questions/40205/how-do-i-disable-tomcat-caching-im-having-weird-static-file-problems?answertab=votes#tab-top

    更改cachingAllowed标志后,您可能必须删除/ work / Catalina / localhost中的应用程序缓存文件夹。 可以在server.xml中引入配置为

        <Context className="org.apache.catalina.core.StandardContext"
                 cachingAllowed="false"
                 charsetMapperClass="org.apache.catalina.util.CharsetMapper"
                 cookies="true" 
                 reloadable="false" 
                 wrapperClass="org.apache.catalina.core.StandardWrapper">
        </Context>