perf(frontend): 배포 버전을 ETag로 재검증한다

This commit is contained in:
2026-08-22 06:04:01 +00:00
parent 3b2b98dc88
commit 8d8ddc5b83
6 changed files with 68 additions and 20 deletions
+5 -3
View File
@@ -140,9 +140,11 @@ commit의 cached artifact를 현재 버전으로 오인하지 않습니다. Orch
game frontend는 bundle에 고정된 commit과 이 정적 문서의 commit을 최초 mount,
60초 주기, tab visibility 복귀와 network online 복귀 때 비교합니다. 다른 full SHA를
처음 관찰하면 공용 info toast로 새로고침 안내만 하고 reload를 강제하지 않습니다.
조회에는 cache-busting query와 `cache: no-store`를 사용하며, 실패·잘못된 문서는
현재 화면을 방해하지 않고 무시합니다. 알림 여부는 tab session storage에만 남으므로
Gateway/game DB, Redis, 인증, 턴 처리에는 mutation이 없습니다. Profile `DEPLOY`
조회 URL은 고정하고 fetch `cache: no-cache`로 browser HTTP cache의 ETag를 매번
재검증합니다. 같은 artifact면 본문 없는 `304`, 새 artifact면 최신 JSON `200`
사용하며, 실패·잘못된 문서는 현재 화면을 방해하지 않고 무시합니다. 알림 여부는 tab
session storage에만 남으므로 Gateway/game DB, Redis, 인증, 턴 처리에는 mutation이
없습니다. Profile `DEPLOY`
API·engine·frontend를 같은 commit worktree에서 함께 전환하므로 이 frontend 문서는
해당 profile의 새 backend/frontend release가 readiness를 통과해 실제 서빙되기 시작한
뒤에만 달라집니다.
+4 -3
View File
@@ -141,9 +141,10 @@ path별 Turbo cache에 저장됩니다. Orchestrator는 cache 복원 후 이를
따라서 같은 commit·같은 공개 prefix의 재배포는 `vue-tsc`와 Vite를 다시 실행하지
않고, 여러 instance가 같은 prefix를 쓰더라도 각 runtime target은 따로 materialize됩니다.
각 artifact의 `deployment-version.json`은 bundle과 같은 full commit SHA만 담습니다.
열린 profile 탭은 이 파일을 cache 우회로 확인해 bundle SHA와 달라졌을 때 한 번만
`새 버전이 준비되었습니다. 새로고침하면 변경사항이 반영됩니다.` toast를 표시합니다.
서버는 reload를 강제하지 않으며 이 확인은 정적 GET과 tab session storage만 사용해
열린 profile 탭은 이 파일의 고정 URL을 ETag로 조건부 재검증해 bundle SHA와 달라졌을
때 한 번만 `새 버전이 준비되었습니다. 새로고침하면 변경사항이 반영됩니다.` toast를
표시합니다. 같은 artifact의 응답은 `304`라 본문을 다시 전송하지 않습니다. 서버는
reload를 강제하지 않으며 이 확인은 정적 GET과 tab session storage만 사용해
game/Gateway DB와 Redis에 영향을 주지 않습니다.
`RESET`은 선택 worktree의 Gateway profile-seed CLI도 실행하므로 기존처럼
`gateway-api`까지 server build에 포함하고, seed를 호출하지 않는 `DEPLOY`만 명시적