Auto-evict cache after each image download

When auto_evict is enabled and cache exceeds max_cache_mb,
evicts oldest non-favorited files immediately after download.
This commit is contained in:
pax 2026-04-05 01:09:17 -05:00
parent 6375806127
commit 074d75770e

View File

@ -884,6 +884,25 @@ class BooruApp(QMainWindow):
if 0 <= idx < len(self._grid._thumbs): if 0 <= idx < len(self._grid._thumbs):
self._grid._thumbs[idx]._cached_path = path self._grid._thumbs[idx]._cached_path = path
self._update_fullscreen(path, info) self._update_fullscreen(path, info)
# Auto-evict if over cache limit
self._auto_evict_cache()
def _auto_evict_cache(self) -> None:
if not self._db.get_setting_bool("auto_evict"):
return
max_mb = self._db.get_setting_int("max_cache_mb")
if max_mb <= 0:
return
max_bytes = max_mb * 1024 * 1024
current = cache_size_bytes(include_thumbnails=False)
if current > max_bytes:
protected = set()
for fav in self._db.get_favorites(limit=999999):
if fav.cached_path:
protected.add(fav.cached_path)
evicted = evict_oldest(max_bytes, protected)
if evicted:
log.info(f"Auto-evicted {evicted} cached files")
def _on_favorite_selected(self, fav) -> None: def _on_favorite_selected(self, fav) -> None:
self._status.showMessage(f"Favorite #{fav.post_id}") self._status.showMessage(f"Favorite #{fav.post_id}")