4.0 KiB
4.0 KiB
修改记录
2026-06-10
1. 优化图片上传性能
文件: server/src/routes/settings.js
问题: 批量上传图片到 RUSTFS 时串行执行,每张图片需等待上一张完成,导致上传时间过长。
解决方案: 将 for...of 串行上传改为 Promise.all 并行上传。
改动内容:
- 将批量上传接口
/upload-images的串行逻辑改为并行 - 使用
Promise.all()同时上传所有图片
2. 新增服务端配置页面
目标: 在前端设置界面添加配置页面,支持动态修改 .env 配置并重启后端服务。
后端新增文件
server/src/config/envManager.js
readEnv()- 读取并解析 .env 文件writeEnv(config)- 将配置对象写入 .env 文件getSafeConfig()- 返回安全展示的配置(密码用******替代)
server/src/routes/config.js
GET /api/config- 获取当前配置(密码隐藏)PUT /api/config- 更新配置并写入 .env 文件POST /api/config/restart- 优雅重启后端服务
后端修改文件
server/src/index.js
- 注册新路由
app.use('/api/config', configRouter)
前端新增文件
src/views/ServerConfigView.vue
- 配置分组显示:数据库、RUSTFS、服务器
- 密码字段显示为
******,修改时留空则不修改原密码 - 保存按钮 - 调用 API 保存配置到 .env
- 重启按钮 - 调用 API 优雅重启服务(需 PM2 等进程管理器)
前端修改文件
src/router/index.js
- 添加路由
/server-config-> ServerConfigView(懒加载)
src/i18n/index.js
- 添加
serverConfig中英文翻译
src/components/SiteHeader.vue
- 导航栏添加"服务端配置"链接
使用说明
-
启动后端(需使用 PM2 管理进程):
pm2 start npm -- run dev -
访问配置页面: 启动后端后访问
/server-config -
保存配置: 点击"保存配置"按钮,配置会写入
.env文件 -
重启服务: 点击"重启服务"按钮,后端会优雅退出(
process.exit(0)),PM2 会自动重启
注意事项
- 密码字段显示为
******,如需修改请输入新密码,留空则保持原密码不变 - 重启功能需要配合 PM2 等进程管理器使用,否则服务将无法自动恢复
3. 新增文章编辑功能
目标: 提供完整的文章新建和编辑功能。
前端新增文件
src/views/PostEditorView.vue
- 新建文章页面 (
/post/new) - 编辑文章页面 (
/post/edit/:id) - 包含标题、日期、摘要、正文等字段
- 保存后自动返回文章列表
前端修改文件
src/views/HomeView.vue
- 页面头部添加"新建文章"按钮
src/views/PostDetail.vue
- 添加"编辑"和"删除"按钮
- 支持从文章详情页直接编辑或删除
src/router/index.js
- 添加路由
/post/new-> PostEditorView - 添加路由
/post/edit/:id-> PostEditorView
src/i18n/index.js
- 添加
home.newPost翻译 - 添加
postEditor完整翻译(中英文)
4. 后端定时任务调度器
目标: 将定时任务调度逻辑从前端移到后端,确保即使没有人打开页面,任务也会按计划执行。
新增文件
server/src/config/cronScheduler.js
start()- 启动调度器,每 10 秒检查一次到期任务stop()- 停止调度器checkAndRunTasks()- 检查并执行到期的任务executeTask(task)- 执行单个定时任务
后端修改文件
server/src/index.js
- 导入
cronScheduler模块 - 在服务器启动时调用
cronScheduler.start()
功能说明
- 调度器每 10 秒检查一次所有已启用的定时任务
- 当任务的
nextRun时间已到,立即执行任务 - 执行后自动计算下一次执行时间并更新数据库
- 任务在后端运行,不依赖前端页面打开
注意事项
- 定时任务由后端调度,前端 CronView 仍可手动执行和查看任务状态
- 后端调度需在服务器运行期间持续工作(由 PM2 等进程管理器保持)