diff --git a/FastGithub.DomainResolve/IPAddressElapsed.cs b/FastGithub.DomainResolve/IPAddressElapsed.cs
index f5e6f38..60a6cf9 100644
--- a/FastGithub.DomainResolve/IPAddressElapsed.cs
+++ b/FastGithub.DomainResolve/IPAddressElapsed.cs
@@ -13,7 +13,7 @@ namespace FastGithub.DomainResolve
[DebuggerDisplay("Adddress={Adddress} Elapsed={Elapsed}")]
struct IPAddressElapsed
{
- private static readonly TimeSpan connectTimeout = TimeSpan.FromSeconds(10d);
+ private static readonly TimeSpan connectTimeout = TimeSpan.FromSeconds(5d);
///
/// 获取IP地址
diff --git a/FastGithub.Http/HttpClientFactory.cs b/FastGithub.Http/HttpClientFactory.cs
index c8e53d6..61be5a1 100644
--- a/FastGithub.Http/HttpClientFactory.cs
+++ b/FastGithub.Http/HttpClientFactory.cs
@@ -13,12 +13,17 @@ namespace FastGithub.Http
private readonly IDomainResolver domainResolver;
///
- /// httpHandler的生命周期
+ /// 首次生命周期
///
- private readonly TimeSpan lifeTime = TimeSpan.FromMinutes(1d);
+ private readonly TimeSpan firstLiftTime = TimeSpan.FromSeconds(10d);
///
- /// HttpHandler清理器
+ /// 非首次生命周期
+ ///
+ private readonly TimeSpan nextLifeTime = TimeSpan.FromMinutes(1d);
+
+ ///
+ /// LifetimeHttpHandler清理器
///
private readonly LifetimeHttpHandlerCleaner httpHandlerCleaner = new();
@@ -27,6 +32,7 @@ namespace FastGithub.Http
///
private readonly ConcurrentDictionary> httpHandlerLazyCache = new();
+
///
/// HttpClient工厂
///
@@ -43,30 +49,16 @@ namespace FastGithub.Http
///
public HttpClient CreateHttpClient(DomainConfig domainConfig)
{
- var lifetimeHttpHandlerLazy = this.httpHandlerLazyCache.GetOrAdd(domainConfig, this.CreateLifetimeHttpHandlerLazy);
+ var lifetimeHttpHandlerLazy = this.httpHandlerLazyCache.GetOrAdd(domainConfig, CreateLifetimeHttpHandlerLazy);
var lifetimeHttpHandler = lifetimeHttpHandlerLazy.Value;
return new HttpClient(lifetimeHttpHandler, disposeHandler: false);
+
+ Lazy CreateLifetimeHttpHandlerLazy(DomainConfig domainConfig)
+ {
+ return new Lazy(() => this.CreateLifetimeHttpHandler(domainConfig, this.firstLiftTime), true);
+ }
}
- ///
- /// 创建LazyOf(LifetimeHttpHandler)
- ///
- ///
- ///
- private Lazy CreateLifetimeHttpHandlerLazy(DomainConfig domainConfig)
- {
- return new Lazy(() => this.CreateLifetimeHttpHandler(domainConfig), true);
- }
-
- ///
- /// 创建LifetimeHttpHandler
- ///
- ///
- private LifetimeHttpHandler CreateLifetimeHttpHandler(DomainConfig domainConfig)
- {
- var httpClientHandler = new HttpClientHandler(domainConfig, this.domainResolver);
- return new LifetimeHttpHandler(httpClientHandler, this.lifeTime, this.OnLifetimeHttpHandlerDeactivate);
- }
///
/// 当有httpHandler失效时
@@ -74,10 +66,26 @@ namespace FastGithub.Http
/// httpHandler
private void OnLifetimeHttpHandlerDeactivate(LifetimeHttpHandler lifetimeHttpHandler)
{
- // 切换激活状态的记录的实例
var domainConfig = lifetimeHttpHandler.DomainConfig;
- this.httpHandlerLazyCache[domainConfig] = this.CreateLifetimeHttpHandlerLazy(domainConfig);
+ this.httpHandlerLazyCache[domainConfig] = CreateLifetimeHttpHandlerLazy(domainConfig);
this.httpHandlerCleaner.Add(lifetimeHttpHandler);
+
+ Lazy CreateLifetimeHttpHandlerLazy(DomainConfig domainConfig)
+ {
+ return new Lazy(() => this.CreateLifetimeHttpHandler(domainConfig, this.nextLifeTime), true);
+ }
+ }
+
+ ///
+ /// 创建LifetimeHttpHandler
+ ///
+ ///
+ ///
+ ///
+ private LifetimeHttpHandler CreateLifetimeHttpHandler(DomainConfig domainConfig, TimeSpan lifeTime)
+ {
+ var httpClientHandler = new HttpClientHandler(domainConfig, this.domainResolver);
+ return new LifetimeHttpHandler(httpClientHandler, lifeTime, this.OnLifetimeHttpHandlerDeactivate);
}
}
}
\ No newline at end of file