You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Github+Cloudflare部署的PhaserJS网页游戏无法在线更新

已访问过PhaserJS游戏页面的用户无法加载1.1新版本的排查与解决

问题背景

我用PhaserJS开发的游戏推送1.1版本后,从未访问过页面的用户能正常看到新版本,但所有已访问过的用户刷新后仍显示1.0版本,网站其他页面更新正常。

已尝试的无效操作

  • 清除本地浏览器缓存
  • 在Cloudflare中清除全部缓存并开启开发者模式(绕过客户端缓存)
  • 清空游戏核心文件index.js代码后重新部署
  • 删除Github上整个游戏目录后重新推送新代码

可行的排查与解决方向

1. 检查静态资源的缓存头配置

PhaserJS游戏依赖的index.js、纹理、音频等静态资源,如果HTTP响应头设置了过长的Cache-Control(例如max-age=31536000),边缘节点或浏览器可能仍留存旧资源:

  • 登录Cloudflare查看游戏目录的专属缓存规则,确认是否存在覆盖全局设置的策略;
  • 检查服务器返回的Cache-Control、ETag、Last-Modified字段,确保资源更新时能触发重新请求。

2. 为资源添加内容哈希(Content Hash)

这是解决静态资源缓存问题的标准方案:资源内容变化时,文件名同步加上哈希值(如index.abc123.js),浏览器会自动识别新文件名并请求最新资源:

  • 若使用Webpack、Vite等构建工具,配置输出文件名加入[contenthash]即可自动生成;
  • 手动维护文件的话,每次更新后修改文件名,并同步更新HTML中的资源引用路径。

3. 排查Service Worker缓存

如果页面注册了Service Worker,它会在后台独立缓存资源,普通缓存清除操作无法触及其更新:

  • 打开浏览器开发者工具的Application面板,找到Service Workers选项,手动注销对应的Service Worker后刷新页面;
  • 确认新版本代码中更新了Service Worker逻辑,或在不需要时移除注册代码。

4. 精准清除Cloudflare缓存

全局缓存清除可能未覆盖特定资源路径,尝试针对游戏目录的具体资源(如/minigames/greenearth/index.js)单独执行缓存清除操作。

5. 检查硬编码的资源版本参数

确认HTML文件中的资源引用是否写死了旧版本参数,比如<script src="index.js?v=1.0"></script>,需同步将版本号更新为v=1.1。

内容的提问来源于stack exchange,提问作者LeftClickMage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:02:04