我试图在调用 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 中它不会再重新加载。有什么建议么?我错过了什么?
更新的标题:
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/