>  기사  >  백엔드 개발  >  Go에는 온보드 DNS 캐싱이 부족합니까?

Go에는 온보드 DNS 캐싱이 부족합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 22:28:03878검색

Does Go Lack Onboard DNS Caching?

Go에 온보드 DNS 캐싱이 부족합니까?

웹 크롤링에서 리소스 효율적인 작업이라는 주목할만한 측면에도 불구하고 Go에는 현재 기본 DNS가 부족합니다. 조회 캐싱. 이는 기본 운영 체제에 Go가 활용할 수 있는 캐싱 기능이 포함되어 있는지 여부에 대한 의문을 제기합니다.

잠재적인 대안 조사

Go는 내장 캐싱을 제공하지 않지만, 기본 OS는 다음 옵션을 제공할 수 있습니다.

  • Debian/Ubuntu/Linux: 명시적인 DNS 캐싱 메커니즘 없음
  • Windows: 로컬 DNS 확인을 위해 HOSTS 파일 유지
  • Darwin /OSX: mDNS 응답기 및 캐싱 지원

타사 솔루션 탐색

Go에서 기본 캐싱이 부족한 점을 보완하려면 dnscache와 같은 외부 패키지를 고려하세요. . 이 솔루션을 사용하면 readme의 코드 조각에서 알 수 있듯이 DNS 캐싱을 쉽게 구현할 수 있습니다.

http.DefaultClient.Transport = &http.Transport {
MaxIdleConnsPerHost: 64,
Dial: func(network string, address string) (net.Conn, error) {
separator := strings.LastIndex(address, ":")
ip, _ := dnscache.FetchString(address[:separator])
return net.Dial("tcp", ip + address[separator:])
},
}

이 코드를 구현하면 http.Get과 같은 기능을 통해 이루어진 모든 HTTP 요청에 대한 캐싱이 가능해집니다.

위 내용은 Go에는 온보드 DNS 캐싱이 부족합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.