Appearance
文件与静态资源
系统通过 public/ 对外提供静态资源,聊天上传内容保存到 public/upload/。上传接口返回的资源地址可直接用于消息内容展示。
目录约定
| 路径 | 用途 | 维护建议 |
|---|---|---|
public/static/ | Web 页面使用的 JavaScript、样式、图片和音频等静态资源。 | 随版本发布;使用版本化发布和缓存策略。 |
public/upload/images/YYYYMM/ | 聊天图片。 | 与数据库一并备份。 |
public/upload/files/YYYYMM/ | 聊天文件、视频和语音文件。 | 与数据库一并备份;关注磁盘空间。 |
public/upload/avatars/YYYYMM/ | 客服头像。 | 与数据库一并备份。 |
public/upload/settings/ | 客服端设置类图片。 | 与数据库一并备份。 |
runtime/ | 日志、Session、PID 与运行时文件。 | 可清理陈旧临时文件,但不要在服务运行时整体删除。 |
上传流程
访客和客服端都遵循“两步上传”:先上传文件,再把返回的 src 组织为消息内容后发送消息。
text
选择文件
↓
调用上传接口(multipart/form-data)
↓
取得 data.src、data.name、data.size
↓
调用发送消息接口上传限制由系统设置读取;访客端初始化数据会返回实际的大小限制。文件类型与大小须以前端校验提升体验,并以后端接口校验作为最终依据。
资源地址
上传接口返回协议相对地址,例如 //<部署域名>/upload/images/...。在页面渲染时应保留该地址,不要替换为开发环境域名。
部署要求
- Web 服务运行用户对
public/upload/具备创建目录和写文件权限。 - 外部访问只应读取静态资源;站点或反向代理不得把上传目录交给 PHP、脚本解释器或 CGI 执行。
- 为上传目录设置备份与容量监控;文件不会因为数据库备份而自动备份。
- 使用对象存储或 CDN 前,先确保上传返回地址、静态读取路径和消息历史中的既有地址可兼容。
缓存建议
public/static/可采用带版本号或内容哈希的长期缓存策略。public/upload/的资源地址由系统生成,建议保持可直接读取;清理历史资源前要先确认消息记录和业务引用已不再需要。- API、登录态和访客初始化响应不应被共享缓存保存。