perf: pause polling intervals when browser tab is hidden

- Replace raw setInterval with startPolling/stopPolling functions
- Add visibilitychange listener to pause when tab is hidden
- Immediately refresh data when tab becomes visible again
- Saves bandwidth and CPU when the dashboard is in background
This commit is contained in:
2026-02-28 23:25:07 +02:00
parent a434f11561
commit 7bcb670b96

View File

@@ -1908,10 +1908,33 @@ document.addEventListener('DOMContentLoaded', function() {
}, { passive: false }); }, { passive: false });
} }
// Set up periodic updates // Set up periodic updates with visibility-aware polling
setInterval(loadStatus, 10000); let statusInterval, logsInterval, argsInterval;
setInterval(loadLogs, 5000);
setInterval(loadActiveArguments, 5000); // Refresh active arguments function startPolling() {
if (!statusInterval) statusInterval = setInterval(loadStatus, 10000);
if (!logsInterval) logsInterval = setInterval(loadLogs, 5000);
if (!argsInterval) argsInterval = setInterval(loadActiveArguments, 5000);
}
function stopPolling() {
clearInterval(statusInterval); statusInterval = null;
clearInterval(logsInterval); logsInterval = null;
clearInterval(argsInterval); argsInterval = null;
}
document.addEventListener('visibilitychange', () => {
if (document.hidden) {
stopPolling();
console.log('⏸ Tab hidden — polling paused');
} else {
loadStatus(); loadLogs(); loadActiveArguments();
startPolling();
console.log('▶️ Tab visible — polling resumed');
}
});
startPolling();
}); });
// Utility functions // Utility functions