是否可以将 HttpClient 缓存用于并发请求?
Is it possible to use HttpClient cache for concurrent requests?
我使用的是 HttpClient 4.5.2,我在其中设置了一个 CachingHttpClient,它使用 EhCache 将文件保存到持久性磁盘存储中。这适用于正常请求,即在初始下载完成后发生的请求。
我不知道如果多个线程第一次尝试下载同一个文件会发生什么。我是否必须使用 FutureRequestExecutionService,或者有更好的方法来实现这一点?应用程序必须下载的文件可能很大,我希望每个文件有多个请求。
默认情况下,像 Ehcache 这样的缓存解决方案不会解析 thundering herd problem。
所以这取决于 HttpClient 处理这个用例的方式。
请注意,Ehcache 支持 read-through pattern 这将通过确保只有一个请求导致加载缓存值而其他请求等待来解决此问题。
我使用的是 HttpClient 4.5.2,我在其中设置了一个 CachingHttpClient,它使用 EhCache 将文件保存到持久性磁盘存储中。这适用于正常请求,即在初始下载完成后发生的请求。
我不知道如果多个线程第一次尝试下载同一个文件会发生什么。我是否必须使用 FutureRequestExecutionService,或者有更好的方法来实现这一点?应用程序必须下载的文件可能很大,我希望每个文件有多个请求。
默认情况下,像 Ehcache 这样的缓存解决方案不会解析 thundering herd problem。
所以这取决于 HttpClient 处理这个用例的方式。
请注意,Ehcache 支持 read-through pattern 这将通过确保只有一个请求导致加载缓存值而其他请求等待来解决此问题。