Skip to content

fix : Service Worker(/sw.js) 캐시 헤더 추가로 배포 반영 지연 방지 #239

@GulSam00

Description

@GulSam00

배경

현재 /sw.js (Serwist 빌드 산출물)에 대한 Cache-Control 헤더가 next.config.ts 또는 Vercel 쪽에 명시되어 있지 않다. 그 결과 브라우저가 Service Worker 파일을 최대 24시간(브라우저 SW spec 상한)까지 캐시할 수 있으며, 이 동안 구 SW가 살아 있으면 SW 내부에 박혀 있는 precache 매니페스트(이전 빌드의 정적 자산 해시, /data/changelog.json, /sitemap.xml 등)가 그대로 사용되어 main 머지 후에도 사용자에게 최신 배포가 반영되지 않을 위험이 있다.

특히 useVersionDialog가 fetch하는 /data/changelog.json 역시 SW precache에 포함되어 있어, 구 SW가 살아 있으면 새 버전 알림 자체가 뜨지 않는 역설이 발생한다.

목표

/sw.js에 명시적인 캐시 무효화 헤더(Cache-Control: public, max-age=0, must-revalidate)를 적용하여, 매 페이지 로드마다 브라우저가 새 SW를 확인하도록 강제한다.

작업 체크리스트

  • apps/web/next.config.tsasync headers() 설정 추가
  • /sw.js 경로에 Cache-Control: public, max-age=0, must-revalidate 적용
  • 빌드 후 pnpm build 정상 종료 확인
  • /verify (build, lint, format, type-check) 통과 확인

비고

  • 후속 작업 후보(별도 이슈): /api/versionno-store 적용, PWARegister의 SW update 감지 + 새로고침 안내, changelog.json의 precache 제외 검토.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions