fix(cache): 브라우저 보관함 버전을 올려 철회된 도엽 표시본을 비운다
도엽 표시용 사본을 철회했지만, 이미 그 사본을 받아 둔 브라우저는 계속 그것을 쓴다 (보관함 키가 주소 기준이라 서버 파일을 지워도 남는다). DB_VERSION 1 -> 2로 올리고 업그레이드 시 기존 저장소를 버리도록 해 다음 접속에서 원본을 새로 받게 한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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<IDBDatabase | null> {
|
||||
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);
|
||||
// 사생활 보호 모드 등으로 열리지 않으면 보관함 없이 동작한다(항상 새로 받는다).
|
||||
|
||||
Reference in New Issue
Block a user