java缓存标准GET请求吗?

java缓存标准GET请求吗?,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,因此,我编写了一个程序,在该程序中,我运行无限多的GET请求来从远程服务器检索json文件。当json文件更改时,程序完成。我正在运行该程序的两个实例。我的问题是,一个程序检测到文件更改,而另一个程序仍然没有检测到文件更改 json文件非常简单 {“状态”:“完成”} 及 {“状态”:“不完整”} 基本psuedo代码是 while(status == "incomplete") { HttpGet httpget = new HttpGet( "http://www

因此,我编写了一个程序,在该程序中,我运行无限多的GET请求来从远程服务器检索json文件。当json文件更改时,程序完成。我正在运行该程序的两个实例。我的问题是,一个程序检测到文件更改,而另一个程序仍然没有检测到文件更改

json文件非常简单

{“状态”:“完成”}

{“状态”:“不完整”}

基本psuedo代码是

  while(status == "incomplete") {
      HttpGet httpget = new HttpGet(
      "http://www.website.com/file.json");
      HttpResponse response = httpClient.execute(httpget);
      ...
  }

您可以尝试通过设置以下参数在服务器端设置缓存:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0"); //

Apache
HttpClient
4.5支持缓存,但默认客户端不缓存,请参阅:

HttpClient缓存提供了一个兼容HTTP/1.1的缓存层,可与HttpClient一起使用——Java等效于浏览器缓存。该实现遵循责任链设计模式,其中缓存HttpClient实现可以作为默认非缓存HttpClient实现的替代品;可以完全从缓存满足的请求不会产生实际的原始请求。在可能的情况下,使用条件get和If-Modified-Since和/或If-None-Match请求头,使用源自动验证过时缓存项


也许避免缓存的最简单解决方案是向url添加
?timestamp=128318238123
。。。你可能想看看这里:比较一下你的两个程序,看看它们有什么不同