Safari를 비롯한 대부분의 브라우저에는 'DNS 프리페칭(DNS Prefetching)' 기능이 탑재되어 있습니다. 이 기능은 웹페이지에 포함된 모든 링크를 미리 살펴보고, 각 링크의 실제 IP 주소를 DNS 서버에 조회함으로써 더 빠른 웹 서핑 경험을 제공하도록 설계되었습니다.
DNS 프리페칭이 정상적으로 작동하면, 웹사이트의 링크를 클릭하는 시점에 이미 브라우저가 해당 IP 주소를 파악하고 있어 요청한 페이지를 즉시 불러올 수 있습니다. 덕분에 페이지 사이를 이동할 때 매우 빠른 반응 속도를 경험하게 됩니다.
그런데 이 기능이 어떻게 문제가 될 수 있을까요? 의외로 DNS 프리페칭은 특정 조건에서 몇 가지 단점을 드러냅니다. 대부분의 브라우저가 이 기능을 사용하지만, 여기서는 Mac의 대표적인 브라우저인 Safari를 중심으로 살펴보겠습니다.
Safari로 웹사이트를 불러올 때, 화면에는 페이지가 다 그려진 것처럼 보이지만 스크롤을 하거나 마우스를 움직이면 빙글빙글 도는 대기 커서만 나타나는 경우가 있습니다. 새로고침 아이콘이 계속 회전하는 것도 눈치챌 수 있는데요. 이는 페이지 자체는 성공적으로 렌더링되었지만, 무언가가 브라우저의 정상적인 응답을 방해하고 있다는 신호입니다.
원인은 여러 가지일 수 있습니다. 페이지에 오류가 있거나, 사이트 서버가 느리거나, 서드파티 광고 서비스처럼 외부에서 불러오는 요소가 다운된 경우 등이 대표적입니다. 이런 문제는 대체로 일시적이며, 몇 분에서 며칠 사이에 저절로 해결됩니다.
하지만 DNS 프리페칭 문제는 조금 다르게 나타납니다. 주로 Safari 세션에서 해당 웹사이트를 '그날 처음' 방문할 때마다 영향을 받습니다. 예를 들어 아침에 사이트를 방문하면 응답이 극도로 느린데, 한 시간 뒤에 다시 접속하면 멀쩡합니다. 그리고 다음 날에도 같은 패턴이 반복됩니다. 첫 방문은 정말 느리고, 그날의 재방문은 전혀 문제가 없는 것이죠.
DNS 프리페칭에서 무슨 일이 일어나고 있을까?
위 예시처럼 아침에 웹사이트에 처음 접속하면, Safari는 페이지에서 발견한 모든 링크에 대해 DNS 쿼리를 일괄 전송합니다. 불러오는 페이지에 따라 쿼리가 몇 개일 수도, 수천 개일 수도 있습니다. 특히 사용자 댓글이 많은 사이트나 포럼 형태의 커뮤니티라면 더욱 그렇습니다.
문제의 핵심은 Safari가 대량의 DNS 쿼리를 보내는 것 자체가 아니라, 구형 홈 네트워크 공유기(라우터)가 이 요청 부하를 감당하지 못하거나, ISP(인터넷 서비스 제공업체)의 DNS 시스템이 요청량에 비해 부족하거나, 두 가지가 겹치는 경우라는 점입니다.
다행히 DNS 프리페칭으로 인한 성능 문제는 두 가지 간단한 방법으로 진단하고 해결할 수 있습니다. 지금부터 두 가지 방법을 하나씩 안내해 드리겠습니다.
방법 1: DNS 서비스 제공업체 변경하기
첫 번째 방법은 DNS 서비스 제공업체를 바꾸는 것입니다. 많은 사람들이 ISP가 알려주는 DNS 설정을 그대로 사용하지만, 사실 원하는 DNS 서비스는 무엇이든 사용할 수 있습니다. 실제로 통신사 기본 DNS 서비스가 만족스럽지 못한 경우가 많아, 제공업체를 변경하는 것만으로도 체감 속도가 크게 개선될 수 있습니다.
온라인 가이드를 참고하면 현재 사용 중인 DNS 제공업체의 성능을 테스트해 볼 수 있습니다.
DNS 서비스를 점검한 후 다른 곳으로 바꾸기로 했다면, 어떤 업체를 선택할지가 고민일 텐데요. OpenDNS와 Google Public DNS는 무료로 이용할 수 있는 인기 있는 선택지입니다. 조금 더 세밀하게 비교하고 싶다면 여러 DNS 제공업체를 직접 테스트해 자신에게 가장 적합한 곳을 찾아보는 것도 좋은 방법입니다.
사용할 DNS 제공업체를 정했다면, Mac의 DNS 설정을 변경하세요.
DNS 제공업체를 변경한 후에는 Safari를 완전히 종료했다가 다시 실행하고, 문제가 반복되던 웹사이트에 접속해 보세요.
사이트가 정상적으로 로딩되고 Safari가 잘 응답한다면 문제는 DNS 제공업체에 있었던 것입니다. 확실히 확인하려면 Mac을 종료 후 재시동한 뒤 같은 웹사이트를 다시 열어보세요. 여전히 잘 작동한다면 해결된 것입니다.
만약 그래도 문제가 있다면 원인은 다른 곳에 있을 가능성이 높습니다. 이전 DNS 설정으로 되돌리거나, 새 설정을 그대로 유지해도 됩니다. 특히 위에서 추천한 DNS 서비스로 변경했다면 그대로 두는 것이 좋습니다. 두 서비스 모두 성능이 우수하기 때문입니다.
방법 2: Safari의 DNS 프리페칭 비활성화하기
그래도 문제가 계속된다면, 해당 웹사이트를 아예 방문하지 않거나 DNS 프리페칭을 비활성화하는 방법밖에 남지 않습니다.
DNS 프리페칭이 Safari 환경설정에서 간편하게 끄고 켤 수 있는 옵션이었다면 좋았겠지만, 아쉽게도 그런 메뉴는 제공되지 않습니다. 사이트별로 프리페칭을 제어하는 기능 역시 없기 때문에, 터미널 명령어를 활용해야 합니다.
/Applications/Utilities(응용 프로그램 > 유틸리티) 폴더에서 터미널(Terminal)을 실행합니다.
열린 터미널 창에 아래 명령어를 입력하거나 복사·붙여넣기 합니다.
defaults write com.apple.safari WebKitDNSPrefetchingEnabled -boolean falseEnter 또는 Return 키를 누릅니다.
이후 터미널을 종료하면 됩니다.
Safari를 종료 후 다시 실행하고, 문제가 되던 웹사이트에 다시 접속해 보세요. 이제는 정상적으로 작동할 것입니다. 원인은 아마 집 네트워크의 구형 공유기였을 가능성이 높습니다. 나중에 공유기를 교체하거나, 제조사가 문제를 해결하는 펌웨어 업데이트를 배포하면 DNS 프리페칭을 다시 켜는 것이 좋습니다. 방법은 다음과 같습니다.
터미널을 실행합니다.
터미널 창에 아래 명령어를 입력합니다.
defaults write com.apple.safari WebKitDNSPrefetchingEnabledEnter 또는 Return 키를 누릅니다.
이후 터미널을 종료하면 됩니다.
이것으로 끝입니다. 장기적으로는 DNS 프리페칭을 켜두는 것이 일반적으로 더 유리합니다. 하지만 문제가 있는 웹사이트를 매일 방문해야 한다면, 프리페칭을 끄는 것만으로도 훨씬 쾌적한 브라우징 환경을 만들 수 있습니다.