iOS Safari中PWA仍加载旧index.html的问题排查咨询
PWA主屏幕添加后加载旧index.html导致白屏的排查方案
问题背景
部署PWA后出现偶发但用户持续遭遇的“白屏死亡”现象,触发Uncaught SyntaxError: Unexpected token '<'错误,疑似缓存问题。已通过以下步骤稳定复现:
- 将PWA添加至主屏幕
- 打开该PWA
- 在
/var/www/my-server目录下修改index.html,使其指向哈希错误的.js文件 - 重新打开PWA时,仍加载旧的index.html文件
- 清理iPhone的Safari缓存后问题依旧
当前环境:使用Cloudflare服务,未配置任何Service Worker
排查步骤
一、Cloudflare缓存验证
- 检查缓存规则:登录Cloudflare后台,进入对应域名的「缓存」→「缓存规则」,确认是否存在针对
index.html的缓存策略,比如过长的TTL设置、「始终在线」等强制缓存功能。 - 手动刷新Cloudflare缓存:在「缓存」→「配置」中点击「清除缓存」→「清除全部缓存」,之后测试是否加载新的index.html。
- 查看响应头标识:用浏览器开发者工具Network面板查看index.html的响应头,检查
CF-Cache-Status字段,HIT表示命中Cloudflare缓存,MISS则是回源获取。
二、服务器端缓存配置检查
- 查看服务器缓存头:检查Nginx/Apache等服务器的配置文件,确认
index.html对应的Cache-Control、Expires响应头是否设置了过长的缓存时间(比如max-age=86400会让浏览器缓存24小时)。 - 验证服务器文件更新:直接通过服务器IP访问
http://<服务器IP>/index.html,确认返回的是修改后的内容,排除部署未同步的问题。
三、iOS主屏幕PWA的特殊缓存处理
- iOS主屏幕PWA有独立缓存池,清除Safari缓存无效,可尝试:
- 删除主屏幕上的PWA图标,重新从Safari添加;
- 在Safari中打开PWA网页版,下拉触发硬刷新后,再切换到主屏幕PWA。
- 检查
manifest.json:确认start_url是否正确,是否带有版本参数(如?v=1.0.0),避免缓存旧的启动路径。
四、浏览器缓存强制验证
- 开启开发者工具的「禁用缓存」选项(Network面板),重新加载PWA网页版,确认是否能获取新文件。若可以,说明是浏览器/系统层缓存问题。
- 检查
ETag/Last-Modified响应头:确认服务器是否正确返回这些资源标识,浏览器依赖这些字段判断资源是否更新。
内容的提问来源于stack exchange,提问作者Zanko
相关产品推荐
相关产品推荐

