clear in-memory image cache on server logout
This commit is contained in:
@@ -128,6 +128,13 @@ func (i *ImageCache) GetWithNewTTL(key string, newTtl time.Duration) (image.Imag
|
|||||||
return nil, ErrNotFound
|
return nil, ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *ImageCache) Clear() {
|
||||||
|
i.mu.Lock()
|
||||||
|
defer i.mu.Unlock()
|
||||||
|
|
||||||
|
i.cache = make(map[string]CacheItem)
|
||||||
|
}
|
||||||
|
|
||||||
// must be called when rwmutex is already acquired for writing
|
// must be called when rwmutex is already acquired for writing
|
||||||
func (i *ImageCache) evictOne() {
|
func (i *ImageCache) evictOne() {
|
||||||
now := time.Now().Unix()
|
now := time.Now().Unix()
|
||||||
|
|||||||
+12
-4
@@ -49,7 +49,11 @@ func NewImageManager(ctx context.Context, s *ServerManager, baseCacheDir string)
|
|||||||
DefaultTTL: 1 * time.Minute,
|
DefaultTTL: 1 * time.Minute,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
i.thumbnailCache.OnEvictTaskRan = i.clearExpiredFullSizeCover
|
s.OnLogout(func() {
|
||||||
|
i.thumbnailCache.Clear()
|
||||||
|
i.clearFullSizeCover()
|
||||||
|
})
|
||||||
|
i.thumbnailCache.OnEvictTaskRan = i.clearFullSizeCoverIfExpired
|
||||||
i.thumbnailCache.Init(ctx, 2*time.Minute)
|
i.thumbnailCache.Init(ctx, 2*time.Minute)
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
@@ -223,10 +227,14 @@ func (i *ImageManager) loadLocalImage(path string) (image.Image, bool) {
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *ImageManager) clearExpiredFullSizeCover() {
|
func (i *ImageManager) clearFullSizeCoverIfExpired() {
|
||||||
now := time.Now().UnixMilli()
|
now := time.Now().UnixMilli()
|
||||||
if now-i.cachedFullSizeCoverAccessedAt > fullSizeCoverExpires.Milliseconds() {
|
if now-i.cachedFullSizeCoverAccessedAt > fullSizeCoverExpires.Milliseconds() {
|
||||||
i.cachedFullSizeCoverID = ""
|
i.clearFullSizeCover()
|
||||||
i.cachedFullSizeCover = nil
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *ImageManager) clearFullSizeCover() {
|
||||||
|
i.cachedFullSizeCoverID = ""
|
||||||
|
i.cachedFullSizeCover = nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user