OH SU JINFrontend Engineer

외부 서비스운영 중캠페인 랜딩

PASS 캠페인 랜딩

통신 3사 딥링크와 이벤트 응모를 붙인 캠페인 랜딩 페이지.

담당
퍼블리싱 · 성능 · 배포 · API 연동 전담
팀
백엔드 1 · 프론트 1(본인)
기간
2026.08

정적 호스팅 + CDN으로 배포한 캠페인 페이지. 짧은 기간에 트래픽이 몰리는 성격이라 첫 로드가 전부였고, 폰트 자체 호스팅과 장기 캐시 헤더를 처음부터 깔고 갔다.

스택
HTMLVanilla CSSJavaScriptAWS S3CloudFront배포 스크립트

주요 작업

  • display:none은 다운로드를 막지 못한다

    • PC용·모바일용 이미지를 CSS로 숨기는 방식이라 기기마다 200~265KB를 그냥 버리고 있었다.
    • picture 요소로 바꿔 필요한 한 장만 받도록 했다.
    • 캠페인 페이지는 첫 방문이 곧 전부라 이런 낭비가 그대로 이탈로 간다.
  • CDN 무효화는 브라우저 캐시를 지우지 못한다

    • 무효화만으로는 이미 브라우저에 박힌 JS·CSS가 갱신되지 않는다.
    • HTML에 캐시 버스터 쿼리를 두고 배포 절차에 포함시켰다.
    • 폰트는 1년 immutable로 따로 동기화하므로 갱신하려면 파일명을 바꿔야 한다 — 이 규칙을 배포 문서에 명시해 다음 사람이 같은 함정을 밟지 않게 했다.
  • 유입 채널을 원본 그대로

    • 유입 파라미터를 프론트에서 매핑하지 않고 원본 값 그대로 채널 코드로 전송한다.
    • 매핑 테이블을 두면 새 채널이 생길 때마다 배포가 필요해지기 때문이다.
    • 직접 유입은 아예 필드를 빼서 빈 값과 구분했다.
이미지 낭비
PC·모바일 2장 동시 다운로드picture로 1장−200~265KB
display:none은 다운로드를 막지 못한다
폰트
자체 호스팅 · 1년 immutable 캐시
딥링크
통신 3사 확정 링크
반응형 검증
1023px 경계 실측
중간 해상도까지 시안 대조