v4.0.7: 덱 목록 JS 캐시 무효화 및 UaDeckFavorites.init 방어 처리
구 deck-favorites.js가 CDN에 남아 init 호출이 덱 로드를 막던 문제를 스크립트 ?v= 쿼리와 optional init로 수정한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4516420168710424" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="./style/output.css?v=4.0.6" />
|
||||
<link rel="stylesheet" href="./style/output.css?v=4.0.7" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&family=Noto+Sans+KR:wght@400;700;900&display=swap" rel="stylesheet" />
|
||||
<title>내 덱 관리 - UNIARE</title>
|
||||
</head>
|
||||
@@ -76,13 +76,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/script/api.js"></script>
|
||||
<script src="/script/ads.js"></script>
|
||||
<script src="/script/deck-favorites.js"></script>
|
||||
<script src="/script/deck-preview-hold.js"></script>
|
||||
<script src="/script/page-i18n.js"></script>
|
||||
<script src="/script/page-help.js"></script>
|
||||
<script src="/script/auth-header.js"></script>
|
||||
<script src="/script/api.js?v=4.0.7"></script>
|
||||
<script src="/script/ads.js?v=4.0.7"></script>
|
||||
<script src="/script/deck-favorites.js?v=4.0.7"></script>
|
||||
<script src="/script/deck-preview-hold.js?v=4.0.7"></script>
|
||||
<script src="/script/page-i18n.js?v=4.0.7"></script>
|
||||
<script src="/script/page-help.js?v=4.0.7"></script>
|
||||
<script src="/script/auth-header.js?v=4.0.7"></script>
|
||||
<script>
|
||||
/** @type {Array<object>} */
|
||||
let allDecks = [];
|
||||
@@ -385,7 +385,9 @@
|
||||
if (window.UaPageI18n?.applyPageI18n) {
|
||||
await window.UaPageI18n.applyPageI18n();
|
||||
}
|
||||
await UaDeckFavorites.init();
|
||||
if (typeof UaDeckFavorites?.init === 'function') {
|
||||
await UaDeckFavorites.init();
|
||||
}
|
||||
loadDecks();
|
||||
|
||||
document.getElementById('deck-search').addEventListener('input', renderDeckList);
|
||||
|
||||
@@ -114,9 +114,9 @@ wc -c style/output.css # 약 55000 (55KB) — 44000대면 구버전, pull 누
|
||||
head -1 login.html # output.css?v= 버전 쿼리 포함 여부
|
||||
```
|
||||
|
||||
브라우저에서도 `개발자 도구 → Network → output.css` 크기·상태를 확인한다. Cloudflare를 쓰면 구 CSS가 `immutable`로 남을 수 있어 HTML에 `?v=` 쿼리를 붙인다 (v4.0.6+).
|
||||
브라우저에서도 `개발자 도구 → Network → output.css`·`deck-favorites.js` 크기·상태를 확인한다. Cloudflare를 쓰면 구 파일이 `immutable`로 남을 수 있어 HTML에 `?v=` 쿼리를 붙인다 (v4.0.6+ CSS, v4.0.7+ 덱 페이지 JS).
|
||||
|
||||
`nginx/default.conf`를 변경했다면 `docker compose -f docker-compose.prod.yml up -d --build uniare-web`으로 웹 컨테이너만 재빌드한다. HTML·`style/`만 바뀐 경우 컨테이너 재시작은 필요 없다.
|
||||
`script/deck-favorites.js`는 `window.UaDeckFavorites.init`이 있어야 한다. 없으면 `git pull` 누락 또는 JS CDN 캐시다.
|
||||
|
||||
## 4. 전체 업데이트
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# 업데이트 이력
|
||||
|
||||
## 2026-06-23 / v4.0.7 — 덱 목록 JS 캐시·init 오류 수정
|
||||
|
||||
### 수행 작업
|
||||
- 운영 `deck-favorites.js` 구버전( `init` 없음) + CDN JS 캐시로 `UaDeckFavorites.init is not a function` 발생 → 덱 로드 중단
|
||||
- `deckHistory.html`·`preset.html`: 스크립트에 `?v=4.0.7` 캐시 무효화, `init` 없을 때도 `loadDecks` 실행되도록 방어 코드
|
||||
|
||||
## 2026-06-23 / v4.0.6 — CSS 캐시·배포 반영 수정
|
||||
|
||||
### 수행 작업
|
||||
|
||||
20
preset.html
20
preset.html
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4516420168710424" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="./style/output.css?v=4.0.6" />
|
||||
<link rel="stylesheet" href="./style/output.css?v=4.0.7" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&family=Noto+Sans+KR:wght@400;700;900&display=swap" rel="stylesheet" />
|
||||
<title>공개 덱 - UNIARE</title>
|
||||
</head>
|
||||
@@ -69,13 +69,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/script/api.js"></script>
|
||||
<script src="/script/ads.js"></script>
|
||||
<script src="/script/deck-favorites.js"></script>
|
||||
<script src="/script/deck-preview-hold.js"></script>
|
||||
<script src="/script/page-i18n.js"></script>
|
||||
<script src="/script/page-help.js"></script>
|
||||
<script src="/script/auth-header.js"></script>
|
||||
<script src="/script/api.js?v=4.0.7"></script>
|
||||
<script src="/script/ads.js?v=4.0.7"></script>
|
||||
<script src="/script/deck-favorites.js?v=4.0.7"></script>
|
||||
<script src="/script/deck-preview-hold.js?v=4.0.7"></script>
|
||||
<script src="/script/page-i18n.js?v=4.0.7"></script>
|
||||
<script src="/script/page-help.js?v=4.0.7"></script>
|
||||
<script src="/script/auth-header.js?v=4.0.7"></script>
|
||||
<script>
|
||||
/** @type {Array<object>} */
|
||||
let allDecks = [];
|
||||
@@ -245,7 +245,9 @@
|
||||
if (window.UaPageI18n?.applyPageI18n) {
|
||||
await window.UaPageI18n.applyPageI18n();
|
||||
}
|
||||
await UaDeckFavorites.init();
|
||||
if (typeof UaDeckFavorites?.init === 'function') {
|
||||
await UaDeckFavorites.init();
|
||||
}
|
||||
loadPublicDecks();
|
||||
document.getElementById('deck-search').addEventListener('input', renderList);
|
||||
document.getElementById('deck-series-filter').addEventListener('change', renderList);
|
||||
|
||||
Reference in New Issue
Block a user