File size: 1,132 Bytes
6d0ad0e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
class VueFileCache {
constructor() {
this.cache = new Map();
this.idCounter = 0;
this.cleanupInterval = setInterval(() => this.cleanupCache(), 600000); // Cleanup every 10 minutes
}
generateUniqueId() {
return `cache-${Date.now()}-${++this.idCounter}`;
}
addCache(vueContent, vueFileName, additionalData) {
const cacheId = this.generateUniqueId();
const cacheEntry = { widget: vueContent, name: vueFileName, data: additionalData, time: Date.now() };
this.cache.set(cacheId, cacheEntry);
return cacheId;
}
getCache(cacheId) {
const cacheEntry = this.cache.get(cacheId);
if (cacheEntry) {
cacheEntry.lastAccessed = Date.now();
return cacheEntry;
}
return null;
}
deleteCache(cacheId) {
return this.cache.delete(cacheId);
}
cleanupCache() {
const now = Date.now();
for (const [cacheId, cacheEntry] of this.cache.entries()) {
if (now - cacheEntry.lastAccessed > 600000) { // 10 minutes in milliseconds
this.cache.delete(cacheId);
}
}
}
}
export default new VueFileCache() |