pp / lib /server /VueFileCache.js
xwwww's picture
Upload 253 files
6d0ad0e verified
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()