cachingHttpclient不能忽略标题“Cache-Control:no-cache”
问题描述:
我正在使用Apache cachingHttpClient从Java代码中查询REST API。cachingHttpclient不能忽略标题“Cache-Control:no-cache”
尽管收到导致cachingHttpClient不缓存文件的“Cache-Control:no-cache”头,我想缓存一些http响应。
使用独立http代理(如squid,mod_cache ...),我可以调整配置以忽略这些标题并覆盖默认行为。
我宁愿不去独立的http代理,而是去100%的java代码。
- 是否有另一个http客户端可以提供更多的缓存控制?
- 我可以实现一个会重写头文件的中间层/代理吗?
- 可以通过继承修补cachingHttpClient吗?
答
该请求被canCachedResponseBeUsed
方法中的CachedResponseSuitabilityChecker
拒绝。如果你需要不同的行为,这是实现自己版本的类,然后使用长构造函数cachingHttpClient
CachingHttpClient(HttpClient backend,
CacheValidityPolicy validityPolicy,
ResponseCachingPolicy responseCachingPolicy,
HttpCache responseCache,
CachedHttpResponseGenerator responseGenerator,
CacheableRequestPolicy cacheableRequestPolicy,
CachedResponseSuitabilityChecker suitabilityChecker,
ConditionalRequestBuilder conditionalRequestBuilder,
ResponseProtocolCompliance responseCompliance,
RequestProtocolCompliance requestCompliance)
的拒绝点应该来自CacheableRequestPolicy。长构造函数不能被子类继承。所以,你必须将整个源代码复制到你的包中。这将使错误修复补丁变得困难。 – SXC 2013-02-13 03:20:51