# 部署说明文档 ## 🚀 打包部署流程 ### 1. 打包前准备 确保已安装依赖: ```bash npm install ``` ### 2. 执行打包 ```bash npm run build ``` 打包完成后,会在项目根目录生成 `dist` 文件夹。 ### 3. 缓存控制策略 本项目已配置完善的缓存控制策略,避免浏览器缓存导致更新不生效: #### ✅ 已配置的缓存方案 1. **文件名 Hash 化**(`vite.config.js` 已配置) - 所有 JS、CSS、图片等资源文件名都会带上 hash 值 - 例如:`index.a1b2c3d4.js`、`style.e5f6g7h8.css` - 每次构建后,修改过的文件 hash 会变化,自动避免缓存 2. **HTML 文件不缓存** - `index.html` 设置为不缓存,每次都会获取最新版本 - 通过服务器配置实现(见下方) #### 📝 服务器配置 ##### Apache 服务器(使用 .htaccess) 项目已包含 `public/.htaccess` 文件,打包后会自动复制到 `dist` 目录。 ##### Nginx 服务器 参考项目根目录的 `nginx.conf.example` 文件,配置说明: ```nginx # HTML 文件不缓存 location / { try_files $uri $uri/ /index.html; add_header Cache-Control "no-cache, no-store, must-revalidate"; } # 静态资源长期缓存 location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; } ``` ### 4. 部署步骤 #### 方法一:手动部署 1. 将 `dist` 目录下的所有文件上传到服务器 2. 配置服务器(Apache 或 Nginx) 3. 重启服务器 #### 方法二:使用 FTP/SFTP ```bash # 上传 dist 目录到服务器 scp -r dist/* user@your-server:/var/www/html/ ``` #### 方法三:使用 Docker(可选) 创建 `Dockerfile`: ```dockerfile FROM nginx:alpine COPY dist /usr/share/nginx/html COPY nginx.conf.example /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` ### 5. 更新部署注意事项 #### ⚠️ 每次更新部署时: 1. **清理旧文件** ```bash # 删除服务器上的旧文件 rm -rf /var/www/html/* ``` 2. **上传新文件** ```bash # 上传新的 dist 文件 scp -r dist/* user@your-server:/var/www/html/ ``` 3. **清理服务器缓存**(如果使用了缓存服务器) ```bash # Nginx nginx -s reload # Apache systemctl reload apache2 ``` 4. **通知用户清理浏览器缓存**(可选) - 可以在系统中添加版本提示 - 或者使用 Service Worker 强制更新 ### 6. 验证部署 部署完成后,验证步骤: 1. **清除浏览器缓存** - Chrome: `Ctrl + Shift + Delete` 或 `Cmd + Shift + Delete` - 或使用隐身模式访问 2. **检查文件版本** - 打开浏览器开发者工具(F12) - 查看 Network 标签 - 确认 JS/CSS 文件名带有新的 hash 值 3. **检查 HTML 缓存** - 查看 `index.html` 的响应头 - 确认 `Cache-Control: no-cache` ### 7. 常见问题 #### Q1: 用户反馈看到的还是旧版本? **解决方案:** 1. 确认服务器配置正确(.htaccess 或 nginx 配置) 2. 清理 CDN 缓存(如果使用了 CDN) 3. 通知用户强制刷新(Ctrl + F5 或 Cmd + Shift + R) #### Q2: 静态资源 404 错误? **解决方案:** 1. 检查资源路径配置 2. 确认 `vite.config.js` 中的 `base` 配置正确 3. 检查服务器的静态文件路径 #### Q3: SPA 路由刷新 404? **解决方案:** - Apache: 确保 `.htaccess` 中的 rewrite 规则生效 - Nginx: 确保配置了 `try_files $uri $uri/ /index.html;` ### 8. 自动化部署(可选) #### 使用 GitHub Actions 创建 `.github/workflows/deploy.yml`: ```yaml name: Deploy on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Build run: npm run build - name: Deploy to server uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} REMOTE_HOST: ${{ secrets.REMOTE_HOST }} REMOTE_USER: ${{ secrets.REMOTE_USER }} TARGET: /var/www/html/ ``` ### 9. 性能优化建议 1. **启用 Gzip/Brotli 压缩** 2. **使用 CDN 加速静态资源** 3. **配置 HTTP/2** 4. **启用 HTTPS** ## 📞 技术支持 如有部署问题,请联系技术团队。