From e30655b04e84d896da9a02ce3f82d05cedcd0574 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 21 Jun 2026 18:12:07 +0800 Subject: [PATCH] fix: refresh WebUI with cache buster --- .../src/components/shared/UpgradeRecoveryDialog.vue | 8 +++++++- dashboard/src/components/shared/WaitingForRestart.vue | 8 ++++++-- .../layouts/full/vertical-header/VerticalHeader.vue | 10 ++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/dashboard/src/components/shared/UpgradeRecoveryDialog.vue b/dashboard/src/components/shared/UpgradeRecoveryDialog.vue index a1b401938..85eedcc62 100644 --- a/dashboard/src/components/shared/UpgradeRecoveryDialog.vue +++ b/dashboard/src/components/shared/UpgradeRecoveryDialog.vue @@ -156,6 +156,12 @@ function dismiss() { visible.value = false; } +function reloadWithCacheBuster() { + const url = new URL(window.location.href); + url.searchParams.set('_r', Date.now().toString()); + window.location.replace(url.toString()); +} + function waitForRestart() { clearRestartTimer(); let attempts = 0; @@ -169,7 +175,7 @@ function waitForRestart() { ) { clearRestartTimer(); sessionStorage.removeItem(UPGRADE_RECOVERY_TOKEN_KEY); - window.location.reload(); + reloadWithCacheBuster(); } } catch (_error) { // The backend may be temporarily unavailable during restart. diff --git a/dashboard/src/components/shared/WaitingForRestart.vue b/dashboard/src/components/shared/WaitingForRestart.vue index 229cfbe8c..1db6cd111 100644 --- a/dashboard/src/components/shared/WaitingForRestart.vue +++ b/dashboard/src/components/shared/WaitingForRestart.vue @@ -31,6 +31,11 @@ export default { } }, methods: { + reloadWithCacheBuster() { + const url = new URL(window.location.href) + url.searchParams.set('_r', Date.now().toString()) + window.location.replace(url.toString()) + }, async check(initialStartTime = null) { this.newStartTime = -1 this.cnt = 0 @@ -83,8 +88,7 @@ export default { this.newStartTime = newStartTime console.log('wfr: restarted') this.visible = false - // reload - window.location.reload() + this.reloadWithCacheBuster() } } catch (_error) { // backend may be unavailable during restart window diff --git a/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue b/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue index c4f38337c..c49ddec9f 100644 --- a/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +++ b/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue @@ -611,7 +611,13 @@ async function fetchAstrBotStartTime() { function reloadAfterUpdate() { stopRestartReloadTimer(); - window.location.reload(); + reloadWithCacheBuster(); +} + +function reloadWithCacheBuster() { + const url = new URL(window.location.href); + url.searchParams.set("_r", Date.now().toString()); + window.location.replace(url.toString()); } function showRestartCompleted() { @@ -819,7 +825,7 @@ function updateDashboard() { updateStatus.value = res.data.message || ""; if (res.data.status == "ok") { setTimeout(() => { - window.location.reload(); + reloadWithCacheBuster(); }, 1000); } })