diff --git a/FastGithub.DomainResolve/IPAddressService.cs b/FastGithub.DomainResolve/IPAddressService.cs index 28f3671..25e7ce2 100644 --- a/FastGithub.DomainResolve/IPAddressService.cs +++ b/FastGithub.DomainResolve/IPAddressService.cs @@ -13,26 +13,27 @@ using System.Threading.Tasks; namespace FastGithub.DomainResolve { /// - /// IP状态服务 - /// 状态缓存5分钟 - /// 连接超时5秒 + /// IP服务 + /// 域名IP关系缓存10分钟 + /// IPEndPoint时延缓存5分钟 + /// IPEndPoint连接超时5秒 /// sealed class IPAddressService { private record DomainAddress(string Domain, IPAddress Address); - private readonly TimeSpan domainExpiration = TimeSpan.FromMinutes(5d); + private readonly TimeSpan domainAddressExpiration = TimeSpan.FromMinutes(10d); private readonly IMemoryCache domainAddressCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); private record AddressElapsed(IPAddress Address, TimeSpan Elapsed); - private readonly TimeSpan brokeExpiration = TimeSpan.FromMinutes(1d); - private readonly TimeSpan normalExpiration = TimeSpan.FromMinutes(5d); + private readonly TimeSpan brokeElapsedExpiration = TimeSpan.FromMinutes(1d); + private readonly TimeSpan normaleElapsedExpiration = TimeSpan.FromMinutes(5d); private readonly TimeSpan connectTimeout = TimeSpan.FromSeconds(5d); private readonly IMemoryCache addressElapsedCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); private readonly DnsClient dnsClient; /// - /// IP状态服务 + /// IP服务 /// /// public IPAddressService(DnsClient dnsClient) @@ -66,7 +67,7 @@ namespace FastGithub.DomainResolve { ipEndPoints.Add(new IPEndPoint(address, dnsEndPoint.Port)); var domainAddress = new DomainAddress(dnsEndPoint.Host, address); - this.domainAddressCache.Set(domainAddress, default(object), this.domainExpiration); + this.domainAddressCache.Set(domainAddress, default(object), this.domainAddressExpiration); } if (ipEndPoints.Count == 0) @@ -107,14 +108,14 @@ namespace FastGithub.DomainResolve await socket.ConnectAsync(endPoint, linkedTokenSource.Token); addressElapsed = new AddressElapsed(endPoint.Address, stopWatch.Elapsed); - return this.addressElapsedCache.Set(endPoint, addressElapsed, this.normalExpiration); + return this.addressElapsedCache.Set(endPoint, addressElapsed, this.normaleElapsedExpiration); } catch (Exception) { cancellationToken.ThrowIfCancellationRequested(); addressElapsed = new AddressElapsed(endPoint.Address, TimeSpan.MaxValue); - var expiration = NetworkInterface.GetIsNetworkAvailable() ? this.normalExpiration : this.brokeExpiration; + var expiration = NetworkInterface.GetIsNetworkAvailable() ? this.normaleElapsedExpiration : this.brokeElapsedExpiration; return this.addressElapsedCache.Set(endPoint, addressElapsed, expiration); } finally