Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除主机名HTTP客户端DNS缓存并关闭与特定IP的连接_Http_Go_Dns - Fatal编程技术网

删除主机名HTTP客户端DNS缓存并关闭与特定IP的连接

删除主机名HTTP客户端DNS缓存并关闭与特定IP的连接,http,go,dns,Http,Go,Dns,我正在使用net/http库发出http请求 我有一个用例,有时我解析一个面向Amazon CloudFront发行版的域名。有时出于自身原因,CloudFront会将DNS解析到另一个大陆上的存在点(POP),导致非常高的延迟 当这种情况发生时,我希望引起“目标重置”,使我的http.Client忘记该POP,基本上关闭打开的TCP连接并强制重新解析该主机名的DNS 我找不到一种方法来强制这个“目标重置”。我的选择似乎是: 使用关闭http.Transport中的所有空闲连接,但这将关闭所有T

我正在使用
net/http
库发出http请求

我有一个用例,有时我解析一个面向Amazon CloudFront发行版的域名。有时出于自身原因,CloudFront会将DNS解析到另一个大陆上的存在点(POP),导致非常高的延迟

当这种情况发生时,我希望引起“目标重置”,使我的
http.Client
忘记该POP,基本上关闭打开的TCP连接并强制重新解析该主机名的DNS

我找不到一种方法来强制这个“目标重置”。我的选择似乎是:

  • 使用关闭
    http.Transport
    中的所有空闲连接,但这将关闭所有TCP连接,并且不会对缓存的DNS结果执行任何操作
  • 构建一个全新的
    http.Client
    。我已经确认这确实会导致重新进行DNS查找,并且还会创建一个新的连接池。缺点是它会强制重新解析所有其他DNS,并强制关闭所有其他TCP连接,即使是我喜欢的连接

  • 有没有一种方法可以实现我所描述的“目标重置”(特定主机名的DNS,特定IP地址的TCP连接)?我很乐意使用反射并在某种程度上向下遍历到
    http.Client
    实现中。

    为什么选项2会强制关闭所有其他连接?@HymnsForDisco,因为连接池在客户端中,所以替换客户端会替换池,从而替换那些池中的连接。@HymnsForDisco,是的,正是@Adrian说的。新的
    http.Client
    基本上只是启动一个新池。大概还有一个DNS缓存。