The "Refreshing backup data..." step on every WebUI update fired one `restic stats` (restore-size mode — the slowest restic op) plus ~4 identical unfiltered `restic snapshots --json` pulls per enabled location (dashboard, snapshots, app-status, migrate each pulled their own), all over a fresh SSH connection for remote repos, on every pass with no throttle — the slow, "frozen"-looking line users hit on poor links. Two fixes: 1. Dedupe. engineSnapshotsJson transparently memoises the first unfiltered whole-repo pull per location to a shared cache dir (LP_SNAP_CACHE_DIR, set by webui_updater around the chain), so the four generators reuse one restic call instead of four. Filtered and failed/empty pulls always fall through to a live call. 2. Throttle. Backups and location changes already regenerate this data live when they happen, so the routine pass is only a drift catch-up. Split the cheap local-only generators (engines/schema/passwords — no remote I/O) out to always run, and gate the remote pull behind CFG_BACKUP_DASHBOARD_REFRESH_INTERVAL (minutes, default 30, 0 = every update). A completed backup touches a dirty marker that forces the next pass to pull; WEBUI_UPDATER_FORCE still forces a full refresh. Net: N locations x 5 remote restic calls every update -> 1 call per location, only when something actually changed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
7 lines
589 B
Plaintext
Executable File
7 lines
589 B
Plaintext
Executable File
# ================================================================================
|
|
# Backup General - Scheduling
|
|
# @icon 💾
|
|
# ================================================================================
|
|
CFG_BACKUP_CRONTAB_APP="0 5 * * *" # App Backup Schedule - Crontab schedule for application backups
|
|
CFG_BACKUP_DASHBOARD_REFRESH_INTERVAL=30 # Dashboard Refresh Interval - Minutes between routine restic pulls that refresh the Backups dashboard (a completed backup always refreshes immediately). 0 refreshes on every WebUI update.
|