Java Servlet缓存积极

时间:2011-09-01 09:14:05

标签: 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中重新加载。有什么建议?我错过了什么?

更新了标题:

我的:http://i.imgur.com/ikfVL.png

FB:http://i.imgur.com/o0KsM.png

1 个答案:

答案 0 :(得分:1)

比较您缺少的标头Last-Modified字段。在您的回复中设置此字段很可能会导致浏览器下次使用If-Modified-Since请求标头字段请求图片。

如果没有更改,您可以使用304 Not Modified回复。

另外,您可以使用E-Tag代替Last-Modified标题,以便更好地满足您的需求。


但我想知道你的图像没有像你那样被缓存。据我所知,你正在进行最激进的缓存,因此大多数浏览器都不会要求更新版本,直到expires导致完全没有请求。这是最具侵略性的缓存。

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