1

线程询问是否应缓存由 HttpClientFactory 创建的 HttpClient。我认为答案是否定的,因为每个 HttpClientFactory 都会存在 HttpClientHandler 池。

但我的问题是,如果它被缓存和重用会发生什么。它仍然有DNS更新问题吗?

根据Steve Gordon 的 An Introduction to HttpClientFactory

任何依赖于原始处理程序链的客户端都可以继续使用它而不会出现任何问题。

我认为这意味着缓存的 HttpClient 即使在 2 分钟后仍将继续使用相同的 HttpClientHandler 并且不会进行 DNS 更新。如果是这种情况,则不应缓存 HttpClient 并应始终使用 HttpClientFactory.CreateClient。

ASP.NET Core 文档只是说它不需要保留单个实例,但如果保留单个实例,它并没有说明后果。

使单个 HttpClient 实例长时间保持活动状态是 IHttpClientFactory 开始之前使用的常见模式。迁移到 IHttpClientFactory 后,这种模式就变得不必要了。

4

0 回答 0