diff --git a/backend/package.json b/backend/package.json index 8e73beb..78c274f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.13.5", + "version": "2.13.6", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/utils/resource-cache.js b/backend/src/utils/resource-cache.js index f803dea..3c4e46b 100644 --- a/backend/src/utils/resource-cache.js +++ b/backend/src/utils/resource-cache.js @@ -16,8 +16,13 @@ class ResourceCache { let clear = false; Object.entries(this.resourceCache).forEach((entry) => { const [id, updated] = entry; - if (new Date().getTime() - updated > this.expires) { + if (!updated.time) { + // clear old version cache + delete this.resourceCache[id]; $.delete(`#${id}`); + clear = true; + } + if (new Date().getTime() - updated.time > this.expires) { delete this.resourceCache[id]; clear = true; } @@ -26,9 +31,6 @@ class ResourceCache { } revokeAll() { - Object.keys(this.resourceCache).forEach((id) => { - $.delete(`#${id}`); - }); this.resourceCache = {}; this._persist(); } @@ -38,17 +40,16 @@ class ResourceCache { } get(id) { - const updated = this.resourceCache[id]; + const updated = this.resourceCache[id] && this.resourceCache[id].time; if (updated && new Date().getTime() - updated <= this.expires) { - return $.read(`#${id}`); + return this.resourceCache[id].data; } return null; } set(id, value) { - this.resourceCache[id] = new Date().getTime(); + this.resourceCache[id] = { time: new Date().getTime(), data: value } this._persist(); - $.write(value, `#${id}`); } } diff --git a/scripts/ip-flag.js b/scripts/ip-flag.js index 7982dca..bda8c79 100644 --- a/scripts/ip-flag.js +++ b/scripts/ip-flag.js @@ -17,8 +17,13 @@ class ResourceCache { let clear = false; Object.entries(this.resourceCache).forEach((entry) => { const [id, updated] = entry; - if (new Date().getTime() - updated > this.expires) { + if (!updated.time) { + // clear old version cache + delete this.resourceCache[id]; $.delete(`#${id}`); + clear = true; + } + if (new Date().getTime() - updated.time > this.expires) { delete this.resourceCache[id]; clear = true; } @@ -27,9 +32,6 @@ class ResourceCache { } revokeAll() { - Object.keys(this.resourceCache).forEach((id) => { - $.delete(`#${id}`); - }); this.resourceCache = {}; this._persist(); } @@ -39,17 +41,16 @@ class ResourceCache { } get(id) { - const updated = this.resourceCache[id]; + const updated = this.resourceCache[id] && this.resourceCache[id].time; if (updated && new Date().getTime() - updated <= this.expires) { - return $.read(`#${id}`); + return this.resourceCache[id].data; } return null; } set(id, value) { - this.resourceCache[id] = new Date().getTime(); + this.resourceCache[id] = { time: new Date().getTime(), data: value } this._persist(); - $.write(value, `#${id}`); } }