防止Tomcat返回304 NOT MODIFIED响应

4
如果客户端已经缓存了一个资源(例如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");

但是它只在第二个请求中起作用。第一个请求仍然得到304。 我尝试使用HttpServletRequestWrapper覆盖if-modified-since头部,使用过去的值,比如Mon, 06 Dec 2010 01:34:46 GMT,但没有成功——客户端仍然得到304响应,尽管文件已经在2015年修改过。 有没有办法可以防止304响应?也许通过tomcat配置?

1个回答

0

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

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

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

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接