cachingHttpclient无法忽略标题“Cache-Control:no-cache”

时间:2013-02-12 03:28:28

标签: java caching cache-control apache-httpclient-4.x

我正在使用Apache cachingHttpClient从java代码中查询REST API。

我想缓存一些http响应,尽管收到“Cache-Control:no-cache”标头会导致cachingHttpClient不缓存文件。

使用独立的http代理,例如squid,mod_cache ......,我可以调整配置以忽略这些标头并覆盖默认行为。

我不想选择独立的http代理,而是选择100%的java代码。

  1. 还有另一个http客户端可以提供更多的缓存控制吗?
  2. 我可以实现一个可以重写标题的中间层/代理吗?
  3. 我可以通过继承修补cachingHttpClient吗?

1 个答案:

答案 0 :(得分:2)

请求被CachedResponseSuitabilityChecker方法中的canCachedResponseBeUsed拒绝。如果你需要不同的行为,那就是实现你自己的版本的类,然后使用cachingHttpClient的长构造函数

CachingHttpClient(HttpClient backend, 
     CacheValidityPolicy validityPolicy,
     ResponseCachingPolicy responseCachingPolicy,
     HttpCache responseCache,
     CachedHttpResponseGenerator responseGenerator,
     CacheableRequestPolicy cacheableRequestPolicy,
     CachedResponseSuitabilityChecker suitabilityChecker, 
     ConditionalRequestBuilder conditionalRequestBuilder, 
     ResponseProtocolCompliance responseCompliance, 
     RequestProtocolCompliance requestCompliance)