|
| 1 | +# PWA 部署故障排除指南 |
| 2 | + |
| 3 | +本文档帮助您解决 PWA 姿态估计器在 Cloudflare Pages 部署过程中可能遇到的常见问题。 |
| 4 | + |
| 5 | +## 🔄 重定向问题 |
| 6 | + |
| 7 | +### 问题:"重定向你太多次" 错误 |
| 8 | + |
| 9 | +**症状**:访问网站时浏览器显示 "ERR_TOO_MANY_REDIRECTS" 或 "重定向你太多次" |
| 10 | + |
| 11 | +**原因**:`_redirects` 文件配置不当,导致无限重定向循环 |
| 12 | + |
| 13 | +**解决方案**: |
| 14 | + |
| 15 | +1. **检查 `_redirects` 文件** |
| 16 | + ``` |
| 17 | + # ❌ 错误配置 - 会导致无限重定向 |
| 18 | + /* /main.html 200 |
| 19 | + |
| 20 | + # ✅ 正确配置 - 只重定向特定路径 |
| 21 | + / /main.html 200 |
| 22 | + /index.html /main.html 301 |
| 23 | + /index /main.html 301 |
| 24 | + ``` |
| 25 | + |
| 26 | +2. **避免使用通配符 `/*`** |
| 27 | + - 通配符会匹配所有路径,包括目标路径本身 |
| 28 | + - 导致 `/main.html` 重定向到 `/main.html` 的无限循环 |
| 29 | + |
| 30 | +3. **使用具体的路径匹配** |
| 31 | + - 只为需要重定向的特定路径设置规则 |
| 32 | + - 让其他文件(如 CSS、JS、图片)正常加载 |
| 33 | + |
| 34 | +### 问题:根路径无法访问 |
| 35 | + |
| 36 | +**症状**:访问 `https://your-site.pages.dev/` 显示 404 错误 |
| 37 | + |
| 38 | +**解决方案**: |
| 39 | +``` |
| 40 | +# 在 _redirects 文件中添加 |
| 41 | +/ /main.html 200 |
| 42 | +``` |
| 43 | + |
| 44 | +## 🚫 Service Worker 问题 |
| 45 | + |
| 46 | +### 问题:Service Worker 注册失败 |
| 47 | + |
| 48 | +**症状**:控制台显示 "Failed to register service worker" |
| 49 | + |
| 50 | +**解决方案**: |
| 51 | + |
| 52 | +1. **检查文件路径** |
| 53 | + ```javascript |
| 54 | + // 确保路径正确 |
| 55 | + navigator.serviceWorker.register('/sw.js') |
| 56 | + ``` |
| 57 | + |
| 58 | +2. **检查 HTTPS** |
| 59 | + - Service Worker 只能在 HTTPS 或 localhost 环境下工作 |
| 60 | + - 确保 Cloudflare Pages 已启用 HTTPS |
| 61 | + |
| 62 | +3. **检查文件存在性** |
| 63 | + - 确保 `sw.js` 文件存在于根目录 |
| 64 | + - 检查文件名拼写是否正确 |
| 65 | + |
| 66 | +### 问题:缓存不更新 |
| 67 | + |
| 68 | +**症状**:修改代码后用户看到的仍是旧版本 |
| 69 | + |
| 70 | +**解决方案**: |
| 71 | + |
| 72 | +1. **更新缓存版本** |
| 73 | + ```javascript |
| 74 | + // 在 sw.js 中更新版本号 |
| 75 | + const CACHE_NAME = 'pose-estimator-v1.0.1'; // 增加版本号 |
| 76 | + ``` |
| 77 | + |
| 78 | +2. **清除 Cloudflare 缓存** |
| 79 | + - 在 Cloudflare Dashboard 中点击 "Purge Cache" |
| 80 | + - 或使用 "Purge Everything" |
| 81 | + |
| 82 | +3. **强制刷新浏览器** |
| 83 | + - 按 `Ctrl+F5` (Windows) 或 `Cmd+Shift+R` (Mac) |
| 84 | + |
| 85 | +## 📱 PWA 安装问题 |
| 86 | + |
| 87 | +### 问题:无法显示安装提示 |
| 88 | + |
| 89 | +**症状**:浏览器不显示 "安装应用" 选项 |
| 90 | + |
| 91 | +**解决方案**: |
| 92 | + |
| 93 | +1. **检查 manifest.json** |
| 94 | + ```json |
| 95 | + { |
| 96 | + "name": "姿态估计器", |
| 97 | + "short_name": "PoseEstimator", |
| 98 | + "start_url": "/main.html", |
| 99 | + "display": "standalone", |
| 100 | + "icons": [ |
| 101 | + { |
| 102 | + "src": "icon-192.svg", |
| 103 | + "sizes": "192x192", |
| 104 | + "type": "image/svg+xml" |
| 105 | + } |
| 106 | + ] |
| 107 | + } |
| 108 | + ``` |
| 109 | + |
| 110 | +2. **检查图标文件** |
| 111 | + - 确保图标文件存在且可访问 |
| 112 | + - 检查文件路径和 MIME 类型 |
| 113 | + |
| 114 | +3. **检查 HTTPS** |
| 115 | + - PWA 安装需要 HTTPS 环境 |
| 116 | + |
| 117 | +### 问题:图标不显示 |
| 118 | + |
| 119 | +**症状**:PWA 安装后图标显示为默认图标 |
| 120 | + |
| 121 | +**解决方案**: |
| 122 | + |
| 123 | +1. **检查图标格式** |
| 124 | + - 推荐使用 PNG 格式而非 SVG |
| 125 | + - 确保图标尺寸正确 (192x192, 512x512) |
| 126 | + |
| 127 | +2. **更新 manifest.json** |
| 128 | + ```json |
| 129 | + "icons": [ |
| 130 | + { |
| 131 | + "src": "icon-192.png", |
| 132 | + "sizes": "192x192", |
| 133 | + "type": "image/png", |
| 134 | + "purpose": "any maskable" |
| 135 | + } |
| 136 | + ] |
| 137 | + ``` |
| 138 | + |
| 139 | +## 🎥 摄像头访问问题 |
| 140 | + |
| 141 | +### 问题:无法访问摄像头 |
| 142 | + |
| 143 | +**症状**:页面显示 "摄像头访问被拒绝" 或黑屏 |
| 144 | + |
| 145 | +**解决方案**: |
| 146 | + |
| 147 | +1. **检查权限** |
| 148 | + - 确保用户已授权摄像头访问 |
| 149 | + - 在浏览器地址栏点击摄像头图标检查权限 |
| 150 | + |
| 151 | +2. **检查 HTTPS** |
| 152 | + - 现代浏览器要求 HTTPS 才能访问摄像头 |
| 153 | + - 确保网站使用 HTTPS 协议 |
| 154 | + |
| 155 | +3. **检查设备兼容性** |
| 156 | + - 确保设备有可用的摄像头 |
| 157 | + - 检查其他应用是否正在使用摄像头 |
| 158 | + |
| 159 | +## 🌐 网络和加载问题 |
| 160 | + |
| 161 | +### 问题:TensorFlow.js 加载失败 |
| 162 | + |
| 163 | +**症状**:控制台显示 "Failed to load TensorFlow.js" |
| 164 | + |
| 165 | +**解决方案**: |
| 166 | + |
| 167 | +1. **检查 CDN 链接** |
| 168 | + ```html |
| 169 | + <!-- 确保使用最新稳定版本 --> |
| 170 | + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script> |
| 171 | + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script> |
| 172 | + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"></script> |
| 173 | + <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/pose-detection"></script> |
| 174 | + ``` |
| 175 | + |
| 176 | +2. **检查网络连接** |
| 177 | + - 确保网络连接正常 |
| 178 | + - 尝试访问 CDN 链接验证可用性 |
| 179 | + |
| 180 | +3. **使用备用 CDN** |
| 181 | + ```html |
| 182 | + <!-- 备用方案:使用 unpkg CDN --> |
| 183 | + <script src="https://unpkg.com/@tensorflow/tfjs-core"></script> |
| 184 | + ``` |
| 185 | + |
| 186 | +### 问题:页面加载缓慢 |
| 187 | + |
| 188 | +**症状**:首次访问页面加载时间过长 |
| 189 | + |
| 190 | +**解决方案**: |
| 191 | + |
| 192 | +1. **启用 Cloudflare 优化** |
| 193 | + - 在 Cloudflare Dashboard 中启用 "Auto Minify" |
| 194 | + - 启用 "Brotli" 压缩 |
| 195 | + - 启用 "Rocket Loader" |
| 196 | + |
| 197 | +2. **优化资源加载** |
| 198 | + ```html |
| 199 | + <!-- 预加载关键资源 --> |
| 200 | + <link rel="preload" href="main.js" as="script"> |
| 201 | + <link rel="preload" href="oneEuroFilter.js" as="script"> |
| 202 | + ``` |
| 203 | + |
| 204 | +## 🔧 调试工具 |
| 205 | + |
| 206 | +### Chrome DevTools 调试 |
| 207 | + |
| 208 | +1. **Application 标签** |
| 209 | + - 检查 Service Worker 状态 |
| 210 | + - 查看 Manifest 配置 |
| 211 | + - 检查缓存存储 |
| 212 | + |
| 213 | +2. **Network 标签** |
| 214 | + - 查看资源加载状态 |
| 215 | + - 检查 HTTP 状态码 |
| 216 | + - 分析加载时间 |
| 217 | + |
| 218 | +3. **Console 标签** |
| 219 | + - 查看错误信息 |
| 220 | + - 检查 Service Worker 日志 |
| 221 | + |
| 222 | +### Lighthouse 审计 |
| 223 | + |
| 224 | +1. **运行 PWA 审计** |
| 225 | + - 在 DevTools 中打开 Lighthouse |
| 226 | + - 选择 "Progressive Web App" 类别 |
| 227 | + - 运行审计并查看建议 |
| 228 | + |
| 229 | +2. **性能优化** |
| 230 | + - 查看 Performance 评分 |
| 231 | + - 按照建议优化加载速度 |
| 232 | + |
| 233 | +## 📞 获取帮助 |
| 234 | + |
| 235 | +如果以上解决方案都无法解决您的问题: |
| 236 | + |
| 237 | +1. **检查浏览器控制台** |
| 238 | + - 查看详细的错误信息 |
| 239 | + - 记录错误堆栈跟踪 |
| 240 | + |
| 241 | +2. **查看 Cloudflare 日志** |
| 242 | + - 在 Cloudflare Dashboard 中查看访问日志 |
| 243 | + - 检查是否有服务器错误 |
| 244 | + |
| 245 | +3. **测试不同环境** |
| 246 | + - 在不同浏览器中测试 |
| 247 | + - 在不同设备上测试 |
| 248 | + - 使用隐私模式测试 |
| 249 | + |
| 250 | +4. **联系支持** |
| 251 | + - Cloudflare 社区论坛 |
| 252 | + - GitHub Issues(如果是开源项目) |
| 253 | + |
| 254 | +## 🎯 预防措施 |
| 255 | + |
| 256 | +1. **定期测试** |
| 257 | + - 在部署前在本地测试所有功能 |
| 258 | + - 使用不同浏览器进行兼容性测试 |
| 259 | + |
| 260 | +2. **监控性能** |
| 261 | + - 设置 Cloudflare Analytics |
| 262 | + - 监控错误率和性能指标 |
| 263 | + |
| 264 | +3. **版本控制** |
| 265 | + - 使用 Git 管理代码版本 |
| 266 | + - 为每次部署打标签 |
| 267 | + |
| 268 | +4. **备份配置** |
| 269 | + - 保存工作的配置文件 |
| 270 | + - 记录成功的部署步骤 |
0 commit comments