防止Tomcat中的304 NOT MODIFIED响应
Posted
技术标签:
【中文标题】防止Tomcat中的304 NOT MODIFIED响应【英文标题】:Preventing 304 NOT MODIFIED response in Tomcat 【发布时间】:2016-03-29 15:33:59 【问题描述】:如果资源(index.html)已经缓存在客户端,例如使用响应头:
"Cache-Control": "max-age=0, must-revalidate, proxy-revalidate"
如何防止 tomcat 在 next 对服务器的请求中响应 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
)但没有运气 - 尽管该文件在 2015 年被修改,但客户端仍然收到 304 个响应。
有什么办法可以防止 304 响应?也许通过tomcat配置?
【问题讨论】:
【参考方案1】:不确定这是否会有所帮助,但您可以尝试以下方法 -
删除浏览器缓存从头开始测试是否有效
改编自另一个 ServerFault 问题 -
https://serverfault.com/questions/40205/how-do-i-disable-tomcat-caching-im-having-weird-static-file-problems?answertab=votes#tab-top
在更改缓存允许标志后,您可能必须删除 /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>
【讨论】:
以上是关于防止Tomcat中的304 NOT MODIFIED响应的主要内容,如果未能解决你的问题,请参考以下文章
iOS:收到“304 Not Modified”响应时 AVPlayerItem 中的错误