From 5073916739111bfacb92eacc123f9306365b6029 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 1 Aug 2026 12:06:23 +0900 Subject: [PATCH] =?UTF-8?q?fix(cache):=20=EB=B8=8C=EB=9D=BC=EC=9A=B0?= =?UTF-8?q?=EC=A0=80=20=EB=B3=B4=EA=B4=80=ED=95=A8=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=EC=9D=84=20=EC=98=AC=EB=A0=A4=20=EC=B2=A0=ED=9A=8C=EB=90=9C=20?= =?UTF-8?q?=EB=8F=84=EC=97=BD=20=ED=91=9C=EC=8B=9C=EB=B3=B8=EC=9D=84=20?= =?UTF-8?q?=EB=B9=84=EC=9A=B4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 도엽 표시용 사본을 철회했지만, 이미 그 사본을 받아 둔 브라우저는 계속 그것을 쓴다 (보관함 키가 주소 기준이라 서버 파일을 지워도 남는다). DB_VERSION 1 -> 2로 올리고 업그레이드 시 기존 저장소를 버리도록 해 다음 접속에서 원본을 새로 받게 한다. Co-Authored-By: Claude Opus 5 (1M context) --- A00_Common/b_asset_cache.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/A00_Common/b_asset_cache.ts b/A00_Common/b_asset_cache.ts index 487e6bce..2b9cc584 100644 --- a/A00_Common/b_asset_cache.ts +++ b/A00_Common/b_asset_cache.ts @@ -13,7 +13,9 @@ import { API_BASE_URL } from "@config/config_frontend"; import { fetchConfirmedSurface } from "../B04_wf1_Surface/B04_wf1_Surface_Api_Fetch"; const DB_NAME = "aislo-asset-cache"; -const DB_VERSION = 1; +// 담아 둔 자료의 형식이나 내용이 바뀌면 이 번호를 올린다 — 올리면 기존 보관분을 통째로 버린다. +// v2: 도엽 표시용 사본(잘라낸 자료)을 철회했다. 그 사본을 담고 있던 브라우저는 비워야 한다. +const DB_VERSION = 2; const STORE = "assets"; export interface CachedAsset { @@ -38,10 +40,10 @@ function openDatabase(): Promise { const request = window.indexedDB.open(DB_NAME, DB_VERSION); request.onupgradeneeded = () => { const db = request.result; - if (!db.objectStoreNames.contains(STORE)) { - const store = db.createObjectStore(STORE, { keyPath: "key" }); - store.createIndex("projectId", "projectId", { unique: false }); - } + // 번호가 올라가면 옛 보관분은 형식이나 내용이 다를 수 있으므로 통째로 버리고 새로 만든다. + if (db.objectStoreNames.contains(STORE)) db.deleteObjectStore(STORE); + const store = db.createObjectStore(STORE, { keyPath: "key" }); + store.createIndex("projectId", "projectId", { unique: false }); }; request.onsuccess = () => resolve(request.result); // 사생활 보호 모드 등으로 열리지 않으면 보관함 없이 동작한다(항상 새로 받는다).