3.0 KiB
3.0 KiB
Workdizhi 数据持久化问题分析
🔍 问题诊断
当前状态
- 数据存储方式: 浏览器的
localStorage - Docker 配置: 没有数据卷挂载
- 问题表现: 在新电脑打开后,添加的网址都消失了
根本原因
localStorage是浏览器本地存储,存储在用户的浏览器中- 数据没有保存到服务器文件系统
- 容器中没有数据持久化配置
- 换电脑或清除浏览器数据时,数据会丢失
✅ 当前已有的功能
项目已经实现了导出/导入功能:
- ✅ 导出按钮:可以将数据导出为 JSON 文件
- ✅ 导入按钮:可以从 JSON 文件导入数据
- ✅ 快捷键:Ctrl+S 快速导出
🔧 解决方案
方案 1: 使用导出/导入功能(临时方案)
优点:
- 无需修改代码
- 立即可用
- 用户可以手动备份
使用方法:
- 定期点击"导出"按钮,保存 JSON 文件
- 在新电脑上,点击"导入"按钮,选择之前导出的 JSON 文件
- 数据即可恢复
缺点:
- 需要手动操作
- 容易忘记备份
方案 2: 添加服务器端存储(推荐)
需要修改代码,添加后端 API 来保存数据到服务器文件系统。
实施步骤
- 创建简单的后端服务(Node.js + Express)
- 修改前端代码,使用 API 保存和加载数据
- 添加数据卷挂载到 docker-compose.yml
- 重新构建和部署
详细方案请参考:workdizhi数据持久化修复方案.md
方案 3: 使用浏览器同步(如果支持)
如果浏览器支持同步功能(如 Chrome 同步),可以:
- 启用浏览器同步
- localStorage 数据会同步到云端
- 在新电脑登录同一账号即可恢复
缺点:
- 依赖浏览器服务
- 可能不适用于所有浏览器
📋 当前 Docker 配置
version: '3.8'
services:
web:
build: .
container_name: workdizhi-web
ports:
- "3006:80"
restart: unless-stopped
networks:
- workdizhi-network
# ❌ 缺少 volumes 配置
🔨 快速修复建议
立即行动
-
使用导出功能备份当前数据
- 打开网站:http://101.43.95.130:3006
- 点击"导出"按钮
- 保存 JSON 文件到安全位置
-
在新电脑上导入数据
- 打开网站
- 点击"导入"按钮
- 选择之前导出的 JSON 文件
长期方案
实施方案 2,添加服务器端存储,实现真正的数据持久化。
📊 数据位置对比
| 存储方式 | 当前 | 修复后 |
|---|---|---|
| 浏览器 localStorage | ✅ 使用中 | ⚠️ 降级使用(API 失败时) |
| 服务器文件 | ❌ 无 | ✅ /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json |
| Docker 卷 | ❌ 无 | ✅ 挂载到容器 |
⚠️ 注意事项
- 立即备份: 在修改前,先导出当前所有数据
- 测试: 修改后充分测试数据保存和加载
- 迁移: 如果实施服务器端存储,需要提供数据迁移方案