https://gitlab.synchro.net/main/sbbs/-/commit/101d30166940f08b40929f64
Modified Files:
webv4/sidebar/003-systemStats.xjs
Log Message:
webv4: read each system.stats property once per page render
system.stats.total_users, .total_messages and .total_files are computed
from disk on every property read: they enumerate the user base, every
message base, and every file base respectively. Only the stats backed by
the stats file are cached (286b4c4cd0, nurse-3-film, 2026-01-04) - these
three sit outside that cache, since nothing persists or increments them.
The System Info sidebar read each of them twice. hide_empty_stats
defaults to true, so a guard of the form
!settings.hide_empty_stats || system.stats.total_files
cannot short-circuit: the guard evaluates the property to decide whether
the row is worth showing, and then the row body evaluates it again to
print it.
Snapshot the properties into a local object and render from that. As a
side effect the table becomes internally consistent, where previously
each value could be read at a different moment.
On a system with 144 sub-boards and 1,404 file directories, dropping the duplicate reads takes the front page from 18s to 9s when the data
directory is reached over SMB.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net