Cache the category tree walk (fixes ~1s File Management page load)

_build_category_index() was the one tree-scanning function never
wrapped in the app's existing 5-minute cache - it ran fresh on every
File Management page load and Sort Unsorted scan (not a manual "this
may take a moment" action like Duplicate Courses or Storage Usage), so
the cost was invisible until it was already slow. Measured ~1.0-1.1s
consistently against the live NAS-mounted library at 161 courses,
confirmed via profiling that a single call makes dozens of iterdir()
round-trips - each one a network hop over SMB. Now shares the same
cache_get_or_compute pattern and invalidate_cache() call sites as
get_all_course_dirs(), so no new invalidation logic was needed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 18:06:57 -04:00
co-authored by Claude Sonnet 5
parent ba8d7e2a1b
commit ecabc828ea
3 changed files with 65 additions and 48 deletions
+1 -1
View File
@@ -1 +1 @@
2026-08-24 18:40 UTC — search, bulk actions, undo, storage usage
2026-08-24 21:41 UTC — cache category tree walk (fixes ~1s picker lag)