왜 서드파티 스크립트가 문제일까
오픈한 지 1년이 지난 사이트를 열어 보면, 첫 화면에 보이지도 않는 곳에서 십수 개의 외부 스크립트가 동시에 로드되는 경우가 많습니다. 구글 애널리틱스, 메타 픽셀, 카카오 픽셀, 라이브챗 위젯, 이벤트 트래커, A/B 테스트 도구. 마케팅팀이 한 번씩 추가한 코드가 쌓여 결국 페이지 로딩을 0.5초씩 갉아먹고 있는 거죠.
문제는 이 스크립트들이 우리가 작성한 코드가 아니라는 점입니다. 외부 서버에서 받아오기 때문에 그쪽 응답이 느리면 우리 사이트도 함께 느려지고, 어느 날 갑자기 차단되거나 에러를 뿜으면 메인 콘텐츠 렌더링까지 영향을 받습니다.
1. 정말 필요한 스크립트만 남긴다
가장 먼저 할 일은 감사입니다. 크롬 개발자 도구의 Network 탭을 열고 도메인별로 정렬해 보면, 어디서 무엇을 가져오는지 한눈에 보입니다. 1년 전에 테스트로 붙였던 픽셀, 더 이상 쓰지 않는 분석 도구, 중복으로 깔린 트래커가 의외로 많습니다.
"혹시 모르니 일단 두자"는 가장 비싼 결정입니다. 한 줄짜리 스크립트라도 사용하지 않으면 즉시 제거하는 것이 원칙입니다.
2. 비동기 로딩이 기본이다
서드파티 스크립트는 모두 async 또는 defer 속성으로 로드해야 합니다. 두 속성 모두 HTML 파싱을 막지 않지만 실행 시점이 다릅니다.
- async: 다운로드가 끝나는 즉시 실행. 스크립트 간 실행 순서가 보장되지 않습니다. 트래킹 픽셀처럼 순서가 중요하지 않은 코드에 적합합니다.
- defer: HTML 파싱이 끝난 뒤 작성한 순서대로 실행. 스크립트 간 의존성이 있을 때 사용합니다.
특히 head 영역 안에 동기 스크립트로 박혀 있는 트래커가 있다면 가장 먼저 손봐야 합니다. 그 한 줄이 First Contentful Paint를 통째로 늦추고 있을 가능성이 큽니다.
3. 태그 관리자를 무겁게 만들지 않는다
구글 태그 매니저(GTM)는 양날의 검입니다. 잘 쓰면 마케터가 개발자 도움 없이 태그를 관리할 수 있어 편하지만, 잘못 쓰면 컨테이너 하나가 50개 넘는 태그를 끌고 다니는 무거운 덩어리가 됩니다.
GTM 안에서도 트리거를 정확하게 잡아야 합니다. 모든 페이지에서 발화하는 태그는 정말로 모든 페이지에 필요한 것인지 확인하고, 결제 완료 페이지에서만 필요한 광고 픽셀은 거기에서만 트리거되도록 분리합니다. 사용하지 않는 태그는 일시중지가 아니라 삭제하거나 별도 컨테이너로 옮기는 편이 좋습니다.
4. 화면에 보일 때 로드한다
채팅 위젯, 유튜브 임베드, 인스타그램 피드처럼 첫 화면 아래에 있는 요소는 처음부터 로드할 필요가 없습니다. 사용자가 스크롤해서 그 영역에 도달했을 때 비로소 불러오면 됩니다.
구현 방법은 의외로 간단합니다. IntersectionObserver로 요소가 뷰포트에 들어오는 시점을 감지해 그때 스크립트를 동적으로 추가하는 방식, 또는 유튜브 임베드를 클릭 시점에만 진짜 iframe으로 바꿔치기하는 lite-youtube 같은 패턴이 이미 보편화되어 있습니다.
5. 셀프 호스팅과 서버 사이드 트래킹을 검토한다
한 단계 더 나아가면, 외부 서버를 거치지 않고 우리 도메인에서 직접 스크립트를 제공하는 방법이 있습니다. 구글 애널리틱스의 서버 사이드 GTM, 셀프 호스팅 분석 도구(Plausible, Umami 등)가 대표적입니다.
이 방식은 광고 차단기에 막힐 확률이 줄어들고, 외부 도메인에 대한 DNS 조회가 사라져 응답 속도도 좋아집니다. 다만 셋업 난이도가 있고 운영 비용이 따로 들기 때문에, 트래픽 규모와 데이터 정확도가 중요한 비즈니스에서 검토해 볼 만합니다.
측정해야 관리할 수 있다
서드파티 스크립트 정리는 한 번 하고 끝나는 작업이 아닙니다. 마케팅 캠페인이 바뀔 때마다 새로운 픽셀이 추가되고, 어느 순간 다시 무거워지기 마련이죠. 분기에 한 번씩 PageSpeed Insights와 Network 탭을 열어 점검하는 루틴을 만드는 것이 가장 현실적인 해법입니다.
CYAN은 사이트 제작 단계부터 서드파티 스크립트의 영향을 측정하고, 운영 중에도 정기적으로 성능을 점검하며 마케팅과 속도가 충돌하지 않도록 설계합니다. 사이트가 무거워졌다는 느낌이 들 때 언제든 점검을 요청하셔도 좋습니다.