如何像浏览器一样实现客户端http缓存?
我使用RESTFul服务作为前端的后端。服务在其响应上设置expires/etag/lastmodified标头 我正在寻找的是一个客户端(最好是java)库,它可以从服务中获取数据,并将其缓存在可插拔的缓存后端(如ehcache)中 我还希望能够做到的是,一旦条目无效,就使用后台工作线程自动初始化缓存。此外,执行条件get应该是明智的 我遇到过如何像浏览器一样实现客户端http缓存?,http,restlet,resteasy,http-caching,Http,Restlet,Resteasy,Http Caching,我使用RESTFul服务作为前端的后端。服务在其响应上设置expires/etag/lastmodified标头 我正在寻找的是一个客户端(最好是java)库,它可以从服务中获取数据,并将其缓存在可插拔的缓存后端(如ehcache)中 我还希望能够做到的是,一旦条目无效,就使用后台工作线程自动初始化缓存。此外,执行条件get应该是明智的 我遇到过 还有其他人知道的图书馆吗?这不是一个相当常见的问题吗?Java中客户端HTTP缓存的情况不是特别好。这是一个非常重要的问题,大多数HTTP客户机库开
还有其他人知道的图书馆吗?这不是一个相当常见的问题吗?Java中客户端HTTP缓存的情况不是特别好。这是一个非常重要的问题,大多数HTTP客户机库开发人员都没有攻击过它 我认为这一点变化很慢,但我不能提供一个明确的指标。一个好的开始方式是查看客户端API(如Jersey)附带的各种JAX-RS实现(它没有客户端缓存)。可能是Restlet有一个或多个Restfulie,请检查 下面是我通过谷歌找到的一些东西: 您也可以尝试运行自己的缓存头,但您必须仔细理解缓存头(包括Vary:),才能正确使用它。RestEasy提供了一种机制,如果您使用这样的客户端,则启动和运行该机制非常简单
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
YourService proxy = ProxyFactory.create(YourService.class, url);
LightweightBrowserCache cache = CacheFactory.makeCacheable(proxy);
首先创建一个客户端代理实例,然后将其环绕在缓存中。就是这样。4.0+版本的Apache HttpComponents库附带了HTTP 1.1缓存支持。您可以将其用于Spring RestTemplate restful客户端,如下所示:
CacheConfig cacheConfig = new CacheConfig();
cacheConfig.setMaxCacheEntries(1000);
cacheConfig.setMaxObjectSize(8192);
HttpClient cachingClient = new CachingHttpClient(new DefaultHttpClient(), cacheConfig);
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(cachingClient);
RestTemplate rest = new RestTemplate(requestFactory);