Go에 온보드 DNS 캐싱이 부족합니까?
웹 크롤링에서 리소스 효율적인 작업이라는 주목할만한 측면에도 불구하고 Go에는 현재 기본 DNS가 부족합니다. 조회 캐싱. 이는 기본 운영 체제에 Go가 활용할 수 있는 캐싱 기능이 포함되어 있는지 여부에 대한 의문을 제기합니다.
잠재적인 대안 조사
Go는 내장 캐싱을 제공하지 않지만, 기본 OS는 다음 옵션을 제공할 수 있습니다.
타사 솔루션 탐색
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!