properly delete cache when logging out

This commit is contained in:
Nolan Lawson 2018-01-27 14:55:46 -08:00
parent a779afafce
commit 29b9da64d4
1 changed files with 33 additions and 6 deletions

View File

@ -15,9 +15,18 @@ import {
import QuickLRU from 'quick-lru' import QuickLRU from 'quick-lru'
const statusesCache = new QuickLRU({maxSize: 100}) const statusesCache = {
const accountsCache = new QuickLRU({maxSize: 50}) maxSize: 100,
const metaCache = new QuickLRU({maxSize: 20}) caches: {}
}
const accountsCache = {
maxSize: 50,
caches: {}
}
const metaCache = {
maxSize: 20,
caches: {}
}
if (process.browser && process.env.NODE_ENV !== 'production') { if (process.browser && process.env.NODE_ENV !== 'production') {
window.cacheStats = { window.cacheStats = {
@ -39,16 +48,31 @@ if (process.browser && process.env.NODE_ENV !== 'production') {
} }
} }
function clearCache(cache, instanceName) {
delete cache.caches[instanceName]
}
function getOrCreateInstanceCache(cache, instanceName) {
let cached = cache.caches[instanceName]
if (!cached) {
cached = cache.caches[instanceName] = new QuickLRU({maxSize: cache.maxSize})
}
return cached
}
function setInCache(cache, instanceName, key, value) { function setInCache(cache, instanceName, key, value) {
return cache.set(`${instanceName}/${key}`, value) let instanceCache = getOrCreateInstanceCache(cache, instanceName)
return instanceCache.set(key, value)
} }
function getInCache(cache, instanceName, key) { function getInCache(cache, instanceName, key) {
return cache.get(`${instanceName}/${key}`) let instanceCache = getOrCreateInstanceCache(cache, instanceName)
return instanceCache.get(key)
} }
function hasInCache(cache, instanceName, key) { function hasInCache(cache, instanceName, key) {
return cache.has(`${instanceName}/${key}`) let instanceCache = getOrCreateInstanceCache(cache, instanceName)
return instanceCache.has(key)
} }
// //
@ -203,5 +227,8 @@ export async function getAccount(instanceName, accountId) {
// //
export async function clearDatabaseForInstance(instanceName) { export async function clearDatabaseForInstance(instanceName) {
clearCache(statusesCache, instanceName)
clearCache(accountsCache, instanceName)
clearCache(metaCache, instanceName)
await deleteDatabase(instanceName) await deleteDatabase(instanceName)
} }