Files
workdizhi/数据持久化问题分析.md

3.0 KiB
Raw Permalink Blame History

Workdizhi 数据持久化问题分析

🔍 问题诊断

当前状态

  1. 数据存储方式: 浏览器的 localStorage
  2. Docker 配置: 没有数据卷挂载
  3. 问题表现: 在新电脑打开后,添加的网址都消失了

根本原因

  • localStorage 是浏览器本地存储,存储在用户的浏览器中
  • 数据没有保存到服务器文件系统
  • 容器中没有数据持久化配置
  • 换电脑或清除浏览器数据时,数据会丢失

当前已有的功能

项目已经实现了导出/导入功能:

  • 导出按钮:可以将数据导出为 JSON 文件
  • 导入按钮:可以从 JSON 文件导入数据
  • 快捷键Ctrl+S 快速导出

🔧 解决方案

方案 1: 使用导出/导入功能(临时方案)

优点

  • 无需修改代码
  • 立即可用
  • 用户可以手动备份

使用方法

  1. 定期点击"导出"按钮,保存 JSON 文件
  2. 在新电脑上,点击"导入"按钮,选择之前导出的 JSON 文件
  3. 数据即可恢复

缺点

  • 需要手动操作
  • 容易忘记备份

方案 2: 添加服务器端存储(推荐)

需要修改代码,添加后端 API 来保存数据到服务器文件系统。

实施步骤

  1. 创建简单的后端服务Node.js + Express
  2. 修改前端代码,使用 API 保存和加载数据
  3. 添加数据卷挂载到 docker-compose.yml
  4. 重新构建和部署

详细方案请参考: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 配置

🔨 快速修复建议

立即行动

  1. 使用导出功能备份当前数据

  2. 在新电脑上导入数据

    • 打开网站
    • 点击"导入"按钮
    • 选择之前导出的 JSON 文件

长期方案

实施方案 2添加服务器端存储实现真正的数据持久化。

📊 数据位置对比

存储方式 当前 修复后
浏览器 localStorage 使用中 ⚠️ 降级使用API 失败时)
服务器文件 /home/renjianbo/devops/workdizhi/workdizhi/data/urls.json
Docker 卷 挂载到容器

⚠️ 注意事项

  1. 立即备份: 在修改前,先导出当前所有数据
  2. 测试: 修改后充分测试数据保存和加载
  3. 迁移: 如果实施服务器端存储,需要提供数据迁移方案