3.2 KiB
3.2 KiB
版本控制和缓存管理
🎯 版本控制策略
1. 版本号管理
项目使用 语义版本控制 (Semantic Versioning):
MAJOR.MINOR.PATCH(例如: 1.2.3)- PATCH: 向后兼容的错误修复
- MINOR: 向后兼容的新功能
- MAJOR: 不向后兼容的重大更改
2. 发布命令
# 补丁版本 (0.0.7 -> 0.0.8)
npm run release
# 次版本 (0.0.7 -> 0.1.0)
npm run release:minor
# 主版本 (0.0.7 -> 1.0.0)
npm run release:major
# 仅构建(不更新版本号)
npm run build
# 单独的版本升级命令
npm run version:patch # 仅升级版本号
npm run version:minor # 仅升级版本号
npm run version:major # 仅升级版本号
🔧 缓存管理机制
1. Service Worker 版本化
- 每次构建时,Service Worker 缓存名称包含版本号
- 新版本发布时自动清除旧版本缓存
- 开发模式禁用缓存,生产模式启用完整缓存
2. 自动更新检测
- 应用每5分钟检查一次版本更新
- 发现新版本时显示更新提示
- 用户可选择立即更新或稍后更新
3. 强制缓存清除
用户更新时会:
- 清除所有浏览器缓存
- 强制 Service Worker 更新
- 重新加载页面获取最新资源
📁 相关文件
版本控制文件
package.json- 版本号定义scripts/safe-version-bump.js- 智能版本升级脚本scripts/update-version.js- 版本更新脚本apps/web/public/version.json- 运行时版本信息
缓存管理文件
apps/web/public/sw.js- Service Worker (含版本化缓存)packages/drawnix/src/components/version-update/- 版本更新组件apps/web/src/main.tsx- Service Worker 注册和更新逻辑
🚀 部署流程
开发环境
npm start # 启动开发服务器,禁用缓存
生产环境
# 1. 更新版本号并构建
npm run release
# 2. 部署到服务器
# 确保 version.json 和 sw.js 都包含新版本号
🔍 版本检查机制
1. 版本信息来源
- 当前版本: HTML meta 标签
<meta name="app-version"> - 最新版本: 服务器
/version.json接口
2. 更新触发条件
- 定时检查 (每5分钟)
- Service Worker 更新事件
- 用户手动刷新
3. 缓存策略
- 开发模式: 完全禁用缓存,实时更新
- 生产模式: 版本化缓存,自动清理旧版本
🛠️ 自定义配置
修改检查频率
在 version-update.tsx 中修改:
// 每5分钟检查一次更新
const interval = setInterval(checkForUpdates, 5 * 60 * 1000);
修改缓存策略
在 sw.js 中修改缓存名称和清理逻辑:
const CACHE_NAME = `drawnix-v${APP_VERSION}`;
const IMAGE_CACHE_NAME = `drawnix-images-v${APP_VERSION}`;
const STATIC_CACHE_NAME = `drawnix-static-v${APP_VERSION}`;
📊 监控和调试
查看当前版本
// 控制台中查看
console.log(document.querySelector('meta[name="app-version"]').content);
查看缓存状态
// 控制台中查看所有缓存
caches.keys().then(console.log);
Service Worker 调试
- 打开 DevTools > Application > Service Workers
- 查看当前 SW 状态和版本
- 可手动触发更新或注销