全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

设置DNS缓存(Go)

最近更新时间:2025-09-29 16:15:42

Go SDK默认会开启DNS缓存,开启该功能后,Go SDK会在每次DNS查询成功后更新缓存。如果遇到DNS服务器异常等原因导致DNS查询失败,Go SDK会自动使用缓存中的DNS查询结果。

// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建Ks3Client
client := s3.New(&aws.Config{
    Credentials:     cre,                          // 访问凭证,必填
    Region:          "BEIJING",                    // 访问的地域,必填
    Endpoint:        "ks3-cn-beijing.ksyuncs.com", // 访问的域名,必填
    DisableDnsCache: false,                        // 禁用DNS缓存,false: 开启DNS缓存,true: 禁用DNS缓存
})

1.由于DNS缓存功能在实现时会配置HTTPClient,若您已主动设置HTTPClient配置项,将优先使用您指定的配置,此时DisableDnsCache配置项将被忽略,DNS缓存功能也不会生效。

2.若您希望在自定义HTTPClient的同时仍启用DNS缓存功能,可通过设置http.Transport中的DialContext字段来实现。Go SDK提供了aws.DnsCacheTransportDialContext方法,该方法返回符合DialContext字段要求的函数类型。同时您可以使用aws.NewDnsResolver方法创建DNS缓存解析器,并可指定缓存中保留的DNS查询结果数量。

// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换成真正的值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 自定义HTTP客户端
var httpClient = &http.Client{Transport: &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    DialContext: aws.DnsCacheTransportDialContext(&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
    }, aws.NewDnsResolver(100)),
    ForceAttemptHTTP2:     true,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}}
// 创建Ks3Client
client := s3.New(&aws.Config{
    Credentials: cre,                          // 访问凭证,必填
    Region:      "BEIJING",                    // 访问的地域,必填
    Endpoint:    "ks3-cn-beijing.ksyuncs.com", // 访问的域名,必填
    HTTPClient:  httpClient,                   // 自定义HTTP客户端
})

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈