此thread询问是否应缓存HttpClientFactory创建的HttpClient。我认为答案是否定的,因为每个HttpClientFactory都将存在HttpClientHandler池。
但是我的问题是,如果将其缓存并重用,会发生什么。它仍然存在DNS更新问题吗?
根据Steve Gordon's An Introduction to HttpClientFactory
任何依赖原始处理程序链的客户端都可以继续使用它,而不会出现任何问题。
我认为这意味着即使在2分钟之后,缓存的HttpClient仍将继续使用相同的HttpClientHandler,并且不会进行DNS更新。在这种情况下,不应缓存HttpClient,而应始终使用HttpClientFactory.CreateClient。
ASP.NET Core doc只是说它不需要保留一个实例,但是并不能告诉结果是否保留了一个实例。
在IHttpClientFactory建立之前,通常使用一个长期的单个HttpClient实例。迁移到IHttpClientFactory后,该模式就不再需要。