版本控制改进
概述
为了解决 Cloudflare 缓存导致的分析数据更新问题,实施了以下改进:
主要改进
1. 版本控制机制
数据生成器改进 (scripts/generate-analysis-data.js
):
- 添加了人类可读的版本号格式:
YYYYMMDD_HHMM
- 添加了精确的时间戳:
version_timestamp
- 添加了随机构建 ID:
build_id
,确保每次构建都有唯一标识 - 自动生成压缩的
.gz
文件
生成的数据结构:
{
"generated_at": "2025-07-06T08:45:36.707Z",
"version": "20250706_1645",
"version_timestamp": 1751791536707,
"build_id": "qr6owzk6o",
"website_root": "/path/to/website",
"content_data": [],
"statistics": {}
}
2. 缓存破坏机制
前端加载改进 (assets/js/content-analysis-upload.js
):
- 在请求 URL 中添加版本参数:
?v=${timestamp}_${random}
- 智能版本检测:比较时间戳和构建 ID
- 自动标识新版本数据
3. 用户界面增强
新功能:
- 详细的版本信息显示
- 新版本标记(🆕 标志)
- 手动刷新数据按钮
- 多语言支持的状态提示
HTML 模板 (layouts/pages/analysis.html
):
<div id="refreshDataSection" style="display: none; margin-top: 15px;">
<button id="refreshDataBtn" class="btn btn-secondary" onclick="refreshAnalysisData()">
🔄 {{ i18n "analysis_refresh_data" "刷新数据" }}
</button>
</div>
4. 构建流程集成
package.json 改进:
{
"scripts": {
"build": "npm run generate-analysis && hugo --environment production --minify && npm run compress-json"
}
}
现在构建过程会:
- 生成最新的分析数据
- 构建 Hugo 网站
- 压缩其他 JSON 文件
工作流程
本地开发
# 生成分析数据
npm run generate-analysis
# 完整构建(包含分析数据生成)
npm run build
部署后验证
- 分析页面会自动加载最新数据
- 显示版本信息和更新时间
- 如果检测到新版本,会显示 🆕 标记
- 用户可以手动点击"刷新数据"按钮
解决的问题
- Cloudflare 缓存问题: 通过 URL 参数确保每次都获取最新数据
- 版本追踪: 清晰的版本号和时间戳
- 用户体验: 明确的状态反馈和手动刷新选项
- 自动化: 构建过程自动生成最新数据
技术细节
缓存破坏策略
- 首次加载:使用时间戳 + 随机数
- 后续加载:优先使用数据版本信息
- 强制刷新:清除版本缓存,重新获取
版本比较逻辑
const isNewVersion = !currentDataVersion ||
(data.version_timestamp > currentDataVersion.version_timestamp) ||
(data.build_id !== currentDataVersion.build_id);
多语言支持
- 版本信息本地化显示
- 状态提示多语言
- 日期格式本地化
监控建议
- 检查构建日志确认分析数据生成
- 验证部署后的版本号是否更新
- 观察用户反馈的数据更新情况
这套改进确保了每次网站内容更新后,分析页面都能及时反映最新的数据状态。