我们有一个通过HTTP获取资源的Java进程。我发现一个资源即使在客户端修改后也没有正确拉动。深入研究我发现,在服务器上进程正在运行资源的Last-Modified日期与我从浏览器查看信息时看到的日期不符。然后我尝试从不同的服务器和我的笔记本电脑中取出它,这两个都显示了正确的日期。
我已修改过程以允许选项忽略存在的情况下的标题日期(但不正确)但我真的很想知道为什么会发生这种情况。
此处的参考是来自服务器的卷曲响应,它返回不正确的信息。
HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Fri, 23 Sep 2011 14:16:57 GMT
Content-length: 132
Content-type: text/plain
Last-modified: Wed, 15 Sep 2010 21:58:20 GMT
Etag: "84-4c91417c"
Accept-ranges: bytes
然后在不同的服务器上发出相同的请求(在我的机器上也得到相同的结果)
HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Fri, 23 Sep 2011 14:18:47 GMT
Content-length: 132
Content-type: text/plain
Last-modified: Fri, 23 Sep 2011 01:20:43 GMT
Etag: "84-4e7bdeeb"
Accept-ranges: bytes
两台服务器都在Fedora 10上运行。
任何人都可以为我阐明这一点以及我如何能够长期解决这个问题吗?
答案 0 :(得分:0)
所以你有2台服务器并且都返回不同的结果,即不一致问题(我基本上可以从Etag标题看到这个)?
我的第一个猜测就是缓存。任何缓存都有效吗?也许缓存的无效率无法正常工作或ttl(生存时间)设置太长。
由于测试有一个尝试和重新启动机器与陈旧数据,并查看结果是否更改(通常在重新启动系统期间,大多数简单的缓存设置被刷新)。
资源最初来自哪种后端(数据库,文件系统,第三方服务)?