Java Servlet 积极缓存

标签 java jsp servlets

我试图在调用 Java Servlet 链接时输出图像。目前使用以下内容:

response.addHeader("Cache-Control", "max-age=" + CACHE_INTERVAL);
response.addDateHeader("Expires", System.currentTimeMillis() + (1000*CACHE_INTERVAL));

但这仍然会导致图像有时从服务器重新加载。相比之下,如果你看看这个标签:

http://graph.facebook.com/502547234/picture

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

更新的标题:

我的:/image/OCesk.png

Facebook :/image/7ryRQ.png

最佳答案

比较您缺少 Last-Modified 字段的 header 。在响应中设置此字段很可能会导致浏览器下次使用 If-Modified-Since 请求 header 字段请求图像。

如果没有更改,您可以使用 304 Not Modified 进行响应。

或者,您也可以使用 E-Tag 而不是使用 Last-Modified header (当它更适合您的需求时)。

<小时/>

但我想知道您的图像没有按照您的方式进行缓存。据我所知,您正在执行最积极的缓存,导致大多数浏览器甚至不会要求更新的版本,直到过期,导致完全没有请求。这是最积极的缓存可能。

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

关于Java Servlet 积极缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7268264/

相关文章:

java - Spring MVC : Generating links which match the controller url pattern

javascript - 评级不是函数 jquery 插件错误

jsp - 如何删除jSTL中的 session 变量

java - url 仅映射 servlet 中的 ip_address 和端口 URL 中没有应用程序名称

java - 不使用 doGet/doPost 获取 cookie

java - 如何动态地向 GWT UiBinder 中的 HTML 元素添加类?

java - if-else 结构中的不可访问代码

java - 对 JTextArea 使用撤消和重做

java - 如何使用jsp中的键从java map 获取值,但键是一个javascript值

java - Java Servlet中Json字符串解析并插入数据库