DoraCMS前后端分离打包,静态站点部署CDN
DoraCMS 前后端分离打包与静态站点 CDN 部署,核心是把前端项目构建成纯静态文件,再上传到 CDN 或对象存储并配置回源。
整个过程不复杂,但需要分清前端和后端的职责。
本文从零开始,带你走完从环境准备到验证的完整流程,适合刚接触 DoraCMS 或想提升站点访问速度的运维人员。
环境准备与项目结构确认
开始前,确保本地或服务器已安装 Node.js(建议 14 及以上)、npm 或 yarn,以及 Git。
DoraCMS 前后端分离版本通常包含两个仓库:doracms-server(后端 API)和 doracms-client(前端)。
本文只处理前端打包和静态部署,后端需单独运行并提供 API 地址。
进入前端项目目录,检查 package.json 中的 scripts 部分,确认有 build 命令。
同时,找到配置文件(如 .env.production 或 config/index.js),将 API 请求地址改为后端实际域名或 IP,例如:
VUE_APP_BASE_API = 'https://api.yourdomain.com'
如果后端尚未部署,可先使用本地地址测试,但正式部署时必须改为公网可访问的 API。
执行前端打包并检查产物
在项目根目录安装依赖并打包:
npm install
npm run build
打包完成后,产物默认输出到 dist 目录。
进入 dist,确认包含 index.html、static 等文件夹。
用浏览器直接打开 index.html 可能因跨域或路径问题白屏,这是正常的,需要通过 HTTP 服务访问。
快速验证打包结果,可用 serve 临时启动:
npx serve dist
访问 http://localhost:5000,若能正常加载页面且接口请求指向正确后端,说明打包成功。
静态文件上传与 CDN 配置
将 dist 目录下的所有文件上传到 CDN 或对象存储(如阿里云 OSS、腾讯云 COS)。
以 OSS 为例,可使用 ossutil 命令行工具:
ossutil cp -r dist/ oss://your-bucket-name/ --update
上传后,在 CDN 控制台添加加速域名,源站类型选择“对象存储”或“自有源”。
如果源站是对象存储,直接选择对应 Bucket;
如果是自有服务器,填写服务器 IP 和端口。
关键配置:开启“静态网站”功能,默认首页设为 index.html,默认 404 页也设为 index.html(如果前端路由使用 history 模式)。
同时,设置缓存规则:HTML 文件缓存时间建议较短(如 10 分钟),JS/CSS/图片等带哈希指纹的文件可设置较长缓存(如 30 天)。
避坑指南与常见报错处理
1. 页面刷新 404
前端路由若为 history 模式,CDN 需配置“错误页面”重定向到 index.html。
在 CDN 控制台找到“错误页面”或“重写”规则,添加:当状态码为 404 时,重定向到 /index.html。
2. 接口跨域
后端需设置 CORS 允许前端域名。
若后端是 Nginx,添加:
add_header 'Access-Control-Allow-Origin' 'https://your-frontend-domain.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
3. 资源路径错误
打包时若 publicPath 配置为相对路径,可能导致 CDN 上资源 404。
检查 vue.config.js 或 vite.config.js,确保 publicPath 为 / 或完整的 CDN 域名。
4. 缓存导致更新不及时
每次发版后,建议在 CDN 控制台刷新目录或 URL,强制回源拉取最新文件。
效果验证与上线检查
部署完成后,访问 CDN 加速域名,检查:
- 页面是否正常加载,控制台无报错;
- 接口请求是否成功,数据是否显示;
- 使用
curl -I查看响应头,确认Cache-Control和Content-Type正确; - 在不同网络环境(如 4G、Wi-Fi)下测试访问速度。
如果一切正常,说明 DoraCMS 前后端分离打包和静态站点 CDN 部署已完成。
后续每次更新,只需重新打包并上传 dist 目录,再刷新 CDN 缓存即可。
常见疑问
问:后端 API 地址在打包后还能修改吗?
不能直接修改,因为已经编译进静态文件。
如果后端地址可能变化,建议将 API 地址配置为环境变量,在打包时注入,或通过 Nginx 反向代理统一域名。
问:CDN 回源流量太大怎么办?
检查缓存规则,确保静态资源命中缓存。
对于不常变动的文件,设置较长的缓存时间,并开启 CDN 的“分片回源”或“Range 回源”功能。
问:DoraCMS 后端必须用 Node.js 吗?
DoraCMS 后端基于 Node.js,但前后端分离后,前端只依赖 HTTP API,理论上任何语言的后端都可以,只要接口兼容。
问:打包后文件很大,如何优化?
开启构建工具的代码压缩和 Tree Shaking,按需引入组件库,使用 CDN 加载第三方库,并开启 Gzip 或 Brotli 压缩。
完成以上步骤后,你的 DoraCMS 站点就变成了纯静态架构,访问速度更快,运维也更简单。
遇到问题时,优先检查 CDN 缓存和接口跨域配置。