3

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

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

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

我宁愿不使用独立的 http 代理,而是使用 100% java 代码。

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

1 回答 1

2

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

CachingHttpClient(HttpClient backend, 
     CacheValidityPolicy validityPolicy,
     ResponseCachingPolicy responseCachingPolicy,
     HttpCache responseCache,
     CachedHttpResponseGenerator responseGenerator,
     CacheableRequestPolicy cacheableRequestPolicy,
     CachedResponseSuitabilityChecker suitabilityChecker, 
     ConditionalRequestBuilder conditionalRequestBuilder, 
     ResponseProtocolCompliance responseCompliance, 
     RequestProtocolCompliance requestCompliance) 
于 2013-02-12T20:11:09.697 回答