Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Servlet主动缓存_Java_Jsp_Servlets - Fatal编程技术网

Java Servlet主动缓存

Java Servlet主动缓存,java,jsp,servlets,Java,Jsp,Servlets,我试图在调用JavaServlet链接时输出一个图像。目前正在使用以下工具: response.addHeader("Cache-Control", "max-age=" + CACHE_INTERVAL); response.addDateHeader("Expires", System.currentTimeMillis() + (1000*CACHE_INTERVAL)); 但这仍然会导致图像有时从服务器重新加载。相比之下,如果您查看以下标签: 它至少不会在Firefox中重新加载。有

我试图在调用JavaServlet链接时输出一个图像。目前正在使用以下工具:

response.addHeader("Cache-Control", "max-age=" + CACHE_INTERVAL);
response.addDateHeader("Expires", System.currentTimeMillis() + (1000*CACHE_INTERVAL));
但这仍然会导致图像有时从服务器重新加载。相比之下,如果您查看以下标签:

它至少不会在Firefox中重新加载。有什么建议吗?我错过了什么

更新的标题:

地雷:


FB:

比较上次修改的
字段中缺少的标题。如果在响应中设置此字段,则浏览器很可能会在下次请求图像时使用
(如果自
请求标题字段修改)

如果未更改,您可以使用
304 not Modified
进行响应

或者,您可以使用
E-Tag
而不是
Last-Modified
标题,因为它更适合您的需要


但我想知道的是,你的图像没有被缓存的方式,你这样做。据我所知,您正在进行最激烈的缓存,导致大多数浏览器在
过期之前甚至不要求更新版本,导致完全没有任何请求。这是最具攻击性的缓存


未缓存它的一个原因可能是您调用servlet的URL。它看起来像什么?

有时是指它只“有时”重新加载还是总是“有时”重新加载?有时,但我不是在说硬刷新。我意识到Facebook的链接抛出了一个304未修改的标题,而我的标题总是200 OK,这似乎是你能发布请求和响应标题的重复?每次一次:你的缓存和Facebook缓存。@Alec:在Ashkan的重复链接中检查我的答案。你需要考虑更多。您的servlet还需要支持HEAD请求,如果自
以来进行了修改,则对
做出相应的响应,如果匹配
请求,则对
做出相应的响应。我已经用header更新了我的帖子。问题,如何返回未修改的304?可以使用
resp.setStatus(HttpServletResponse.SC\u not\u modified)
对其进行设置,其中resp是
HttpServletResponse
的实例。希望有帮助。我如何知道何时返回未修改的SC_?我的意思是至少有一次我需要返回状态200和实际代码正确。既然设置了标记,如何检查是否已修改?你能用代码指导我吗?我不是要你做我的工作。我找不到任何关于标题标签的全面文档,所以我请求帮助。我不确定何时返回304 not modified标头,何时返回200。不管怎样,我都会弄明白的。没有必要粗鲁。问题是你没有表现出任何努力独自解决问题,问一些可以用谷歌搜索几分钟的问题,或者只是通过点击这里的链接来回答。