闽公网安备 35020302035485号
// 1. 发版时生成版本号(比如用打包时间戳)
const currentVersion = '20231001';
// 2. 用户首次访问时存储版本号
const localVersion = localStorage.getItem('app_version');
if (!localVersion) {
localStorage.setItem('app_version', currentVersion);
}
// 3. 检测版本变化
if (localVersion && localVersion !== currentVersion) {
showRefreshToast('发现新版本,点击刷新以体验最新功能~');
// 更新本地版本号
localStorage.setItem('app_version', currentVersion);
}
// 堆代码 duidaima.com
// 显示提示的UI组件(示例用伪代码)
function showRefreshToast(message) {
Toast.show({
text: message,
duration: 0, // 不自动关闭
button: '立即刷新',
onButtonClick: () => location.reload(),
});
}
适用场景:后台管理系统、工具类网页。// 前端连接 WebSocket
const ws = new WebSocket('wss://你的服务地址');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === 'RELOAD_PAGE') {
showRefreshDialog('系统已升级,请刷新页面以继续使用~');
}
};
// 弹窗提示(示例用伪代码)
function showRefreshDialog(message) {
Modal.confirm({
title: '温馨提示',
content: message,
okText: '立刻刷新',
cancelText: '稍后再说',
onOk: () => location.reload(),
});
}
适用场景:金融系统、实时协作工具等强实时性应用。let isReloading = false;
// 每5分钟检测一次
setInterval(async () => {
if (isReloading) return;
const res = await fetch('/api/check-update');
const { needReload } = await res.json();
if (needReload) {
isReloading = true;
// 无痛刷新:先提示用户,5秒后自动刷新
Toast.show({
text: '系统即将自动更新...',
duration: 5000,
onClose: () => location.reload(),
});
}
}, 5 * 60 * 1000);
适用场景:电商活动页、运营位频繁更新的页面。// sw.js
self.addEventListener('controllerchange', () => {
// 检测到新 Service Worker 安装后,提示用户
self.clients.matchAll().then(clients => {
clients.forEach(client => {
client.postMessage({
type: 'SW_UPDATED',
message: '新版本已就绪,点击刷新即可生效~',
});
});
});
});
// 主线程监听消息
navigator.serviceWorker.addEventListener('message', event => {
if (event.data.type === 'SW_UPDATED') {
showRefreshButton(event.data.message);
}
});
// 显示固定刷新按钮(示例用伪代码)
function showRefreshButton(message) {
const btn = document.createElement('div');
btn.className = 'refresh-banner';
btn.innerHTML = `
<span>${message}</span>
<button onclick="location.reload()">刷新</button>
`;
document.body.appendChild(btn);
}
适用场景:PWA 应用、离线优先的页面。离线应用:Service Worker 静默更新,逼格满分。