Skip to content

docs: 배포 뒤 재방문자 흰 화면(캐시) 정리 — Phase E - #201

Merged
seizeh merged 1 commit into
mainfrom
docs/web-cache-trap
Jul 27, 2026
Merged

docs: 배포 뒤 재방문자 흰 화면(캐시) 정리 — Phase E#201
seizeh merged 1 commit into
mainfrom
docs/web-cache-trap

Conversation

@seizeh

@seizeh seizeh commented Jul 27, 2026

Copy link
Copy Markdown
Owner

#200 과 대시보드 TTL 변경으로 해결된 건을 정본에 남긴다. 원인이 코드 밖(zone 설정)에 절반 걸쳐 있어 코드만 봐서는 알 수 없고, 같은 증상이 다시 나면 또 헤맬 종류라 진단 과정까지 적었다.

적은 것

  • 원인은 캐시가 길어서가 아니라 비대칭이었다. .wasm 은 Cloudflare 기본 캐시 대상이 아니라 늘 새것, .jsmax-age=14400. 역설적으로 둘 다 4시간이었다면 옛것끼리 짝이 맞아 멀쩡했다.
  • 해결에는 web/_headers(코드)와 Browser Cache TTL(대시보드)이 둘 다 필요하다는 것.
  • flutter_service_worker.js자기를 unregister 하는 스텁이라는 것 — 파일이 있다고 캐싱 계층이 있는 게 아니다.

헛짚은 것도 적었다

같은 함정을 다시 밟지 않으려고:

  • app.pawmate.kr 한 곳만 보고 "_headers 가 안 먹는다"고 판단했는데 틀렸다. pawmate-web.pages.dev 에서는 처음부터 정상 적용되고 있었다. 두 호스트를 나란히 재야 zone 이 범인이라는 게 드러난다.
  • 로컬 빌드와 배포본을 shasum 비교해 "배포가 깨졌다"고 봤는데, 로컬이 master 채널이고 CI 가 channel: stable 이라 산출물 바이트는 원래 다르다.
  • 엣지 캐시 때문에 ?x=$RANDOM 없이 헤더를 재면 옛 헤더를 본다.

곁다리

Phase E '남은 것'의 "GitHub Actions 자동 배포(현재는 수동)"가 낡아서 갱신했다 — #197 에서 이미 자동화됐다.

문서만 바뀌므로 배포 워크플로는 돌지 않는다(paths 필터).

🤖 Generated with Claude Code

원인이 코드 밖(zone 설정)에 절반 걸쳐 있어 코드만 봐서는 알 수 없다.
다음에 같은 증상이 나면 또 헤맬 종류라 진단 과정까지 남긴다.

- 원인은 캐시가 길어서가 아니라 **비대칭**이었다는 것. wasm 은 Cloudflare
  기본 캐시 대상이 아니라 늘 새것, js 는 max-age=14400. 둘 다 4시간이었다면
  옛것끼리 짝이 맞아 오히려 멀쩡했다.
- 해결에는 web/_headers(코드)와 Browser Cache TTL(대시보드)이 **둘 다** 필요.
- 헛짚은 것 두 가지도 적었다: 한 호스트만 보고 "_headers 가 안 먹는다"고
  판단한 것(pages.dev 에서는 처음부터 정상), 로컬(master 채널) 빌드와
  배포본(stable)을 shasum 비교해 "배포가 깨졌다"고 본 것.
- flutter_service_worker.js 가 자기를 unregister 하는 스텁이라는 것 —
  존재한다고 캐싱 계층이 있는 게 아니다.

겸사겸사 Phase E '남은 것'의 "GitHub Actions 자동 배포(현재는 수동)"가
낡아서 갱신했다(#197 에서 이미 자동화됨).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@seizeh
seizeh merged commit fb09cd2 into main Jul 27, 2026
1 check passed
@seizeh
seizeh deleted the docs/web-cache-trap branch July 27, 2026 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant