실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 웹 성능 꿀팁

채팅 상담 위젯 때문에 홈페이지가 느릴 때, 첫 스크롤 뒤에 불러오는 법

채팅 상담 버튼을 달고 나서 PageSpeed 점수가 눈에 띄게 떨어진 경험, 생각보다 흔합니다.
위젯 스크립트는 첫 화면에 꼭 필요하지 않은데도 페이지와 함께 내려받아 실행되기 때문입니다.
방문자가 처음 스크롤하거나 화면을 누른 뒤에 위젯을 불러오면 상담 기능은 그대로 두고 첫 로딩만 가볍게 만들 수 있습니다.

💡 async만 붙이면 되는 거 아닌가요?

async는 내려받는 동안 화면 그리기를 막지 않게 해 줄 뿐, 다운로드와 실행 자체는 첫 로딩 시간 안에서 그대로 일어납니다. 채팅 위젯은 버튼 하나를 그리려고 스크립트, 폰트, 이미지를 여러 개 더 불러오는 경우가 많아서, 저사양 휴대폰에서는 이 실행 시간이 터치 반응까지 늦춥니다. 아예 시작 시점을 뒤로 미루는 쪽이 효과가 큽니다.

1. 첫 동작이 생길 때 스크립트를 넣기

업체가 준 설치 코드에서 스크립트 파일을 불러오는 부분만 아래처럼 함수로 감쌉니다. scroll, pointerdown, keydown 중 하나라도 생기면 한 번만 실행되고, 아무 동작 없이 머무는 방문자를 위해 몇 초 뒤 타이머로도 불러옵니다. { once: true }를 주면 이벤트 리스너가 한 번 실행된 뒤 스스로 빠집니다.

<!-- head에 바로 넣던 위젯 스크립트 대신 body 끝에 -->
<script>
(function () {
  var loaded = false;
  function loadChat() {
    if (loaded) return;
    loaded = true;
    var s = document.createElement('script');
    s.src = 'https://업체가-준-주소/plugin.js'; /* 안내받은 주소 그대로 */
    s.async = true;
    document.body.appendChild(s);
  }
  /* 첫 스크롤, 터치, 키 입력 중 하나만 생겨도 불러오기 */
  ['scroll', 'pointerdown', 'keydown'].forEach(function (ev) {
    window.addEventListener(ev, loadChat, { once: true, passive: true });
  });
  /* 아무 동작이 없어도 6초 뒤에는 불러오기 */
  setTimeout(loadChat, 6000);
})();
</script>

설치 코드가 boot나 설정 함수를 먼저 호출하고 그 호출을 큐에 쌓아 두는 구조라면, 그 부분은 원래 자리에 두고 스크립트 삽입 부분만 위 함수로 옮기면 됩니다. 구조가 헷갈리면 업체 개발 문서에서 지연 로딩이나 수동 초기화 항목을 먼저 찾아보세요. 공식으로 지원하는 방법이 있다면 그쪽이 가장 안전합니다.

2. 미뤄도 되는 것과 미루면 안 되는 것 나누기

이 방식은 다른 외부 스크립트에도 쓸 수 있지만, 전부 미루면 오히려 손해입니다. 저희가 작업할 때 쓰는 기준은 "첫 화면을 보는 데 필요한가, 바로 나가는 방문자도 기록해야 하는가" 두 가지입니다.

스크립트지연 여부이유
채팅 상담, 리뷰 위젯미뤄도 됨첫 화면을 보는 데 필요 없음
SNS 피드, 지도 퍼가기미뤄도 됨대부분 페이지 아래쪽에 있음
GA4, 광고 전환 태그미루지 않음바로 나가는 방문자도 집계돼야 함
쿠키 동의 배너미루지 않음다른 태그보다 먼저 떠야 함

3. 정말 늦게 불러오는지 확인하기

크롬 개발자 도구 Network 탭을 열고 위젯 도메인으로 필터를 건 뒤 새로고침합니다. 화면을 건드리기 전에는 아무 요청도 없다가 스크롤하는 순간 줄줄이 찍히면 제대로 적용된 겁니다. 그다음 PageSpeed Insights로 다시 재 보세요. 한 번만 재면 편차가 크니 두세 번 측정해 비교하는 게 좋습니다. 마지막으로 휴대폰에서 상담 버튼을 직접 눌러 대화창이 정상적으로 열리는지까지 봐야 끝입니다.

"상담 버튼은 손님이 둘러보기 시작한 뒤에 떠도 늦지 않습니다."

나눔웹은 외부 스크립트를 하나씩 따져 보고, 꼭 필요한 것만 첫 화면에 남깁니다.


List of Articles
번호 분류 제목 글쓴이
99 웹 성능 홈페이지 로딩 속도를 3배 높이는 '이미지 최적화' 실무 가이드 나눔웹
98 퍼블리싱 CSS 변수로 유지보수와 테마 기능을 한 번에! (CSS Custom Properties) 나눔웹
97 마케팅 카카오톡 링크 썸네일의 비밀! 클릭률을 높이는 '오픈 그래프(OG)' 세팅법 나눔웹
96 모바일 모바일 꽉 찬 화면 하단 짤림 현상! '100vh'의 함정과 완벽 해결법 나눔웹
95 웹 성능 홈페이지 첫 화면 글자 깜빡임(투명 현상) 1초 만에 해결하는 법 나눔웹
94 퍼블리싱 스마트폰에서 로고가 흐리게 보인다고요? 'SVG' 포맷이 정답입니다. 나눔웹
93 웹 성능 클릭 실수 유발하는 '화면 덜컹거림(CLS)', 단 한 줄로 해결하는 법 나눔웹
92 모바일 고객의 이탈을 막는 1초 디테일, '모바일 맞춤형 키보드' 세팅법 나눔웹
91 UI/UX 모바일에서 버튼 누를 때 생기는 촌스러운 '회색 박스' 없애는 법 나눔웹
90 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
89 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
88 모바일 아이폰에서 입력창 누를 때 화면 '자동 확대'되는 현상 막는 법 나눔웹
87 퍼블리싱 지저분한 모바일 스크롤바, 기능은 남기고 쏙 숨기는 마법의 CSS 나눔웹
86 모바일 모바일 웹을 진짜 '앱(App)'처럼! 이미지 꾹 누를 때 뜨는 팝업 막기 나눔웹
85 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
84 퍼블리싱 무거운 플러그인 NO! 넷플릭스처럼 쫀득한 '가로 스와이프' CSS로 뚝딱 만들기 나눔웹
83 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
82 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
81 모바일 하단 고정 버튼이 아이폰 '검은 줄'에 겹친다면? (Safe Area 대응법) 나눔웹
80 모바일 앗, 실수로 새로고침! 튕기는 모바일 화면 꽉 잡는 법 (Overscroll) 나눔웹
Board Pagination Prev 1 2 3 4 5 Next
/ 5
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4