Skip to content

Commit 74f563d

Browse files
author
tianzhao
committed
fix redirect
1 parent 836469f commit 74f563d

2 files changed

Lines changed: 279 additions & 2 deletions

File tree

_redirects

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# 根路径重定向到主页面
22
/ /main.html 200
33

4-
# 处理所有未匹配的路径,重定向到主页面(SPA支持)
5-
/* /main.html 200
4+
# 处理特定路径的重定向,避免无限循环
5+
/index.html /main.html 301
6+
/index /main.html 301
7+
/home /main.html 301
8+
9+
# 404页面重定向到主页面
10+
/404.html /main.html 200
11+
12+
# 注意:不要使用 /* 通配符,会导致无限重定向

troubleshooting.md

Lines changed: 270 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
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

Comments
 (0)