1. 问题背景与痛点分析
在基于ruoyi-vue-pro框架开发数据大屏项目时,我们遇到了一个典型的存储冗余问题。系统采用go-view作为大屏设计器,其自动保存机制导致数据库中出现大量重复图片数据。具体表现为:
-
自动保存机制:系统默认配置会触发两种保存行为
- 定时保存:每30秒自动保存当前大屏设计状态
- 事件触发保存:鼠标离开设计区域时立即保存
-
存储异常现象:观察数据库发现,同一个大屏项目的不同版本缩略图都被作为独立记录存储,导致:
- 单一大屏可能产生数十条图片记录
- 图片内容相似度高达90%以上
- 数据库存储空间被无效占用
-
技术栈背景:
- 前端:Vue.js + go-view组件
- 后端:Spring Boot + MyBatis
- 存储:MySQL数据库
关键问题:虽然业务逻辑要求频繁保存设计状态,但技术实现上缺少去重机制,导致存储资源浪费。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术原理深度解析
2.1 现有上传机制分析
当前文件上传流程的核心代码集中在两个Java类中:
java复制// FileController.java
@PostMapping("/upload")
public CommonResult<String> uploadFile(FileUploadReqVO uploadReqVO) throws Exception {
MultipartFile file = uploadReqVO.getFile();
String path = uploadReqVO.getPath();
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
}
// FileServiceImpl.java
public String createFile(String name, String path, byte[] content) {
// ...类型检测与路径生成逻辑
// 存储到文件系统
F
