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

Firebase Hosting无法自动加载Flutter应用最新版本求助

Flutter + Firebase Hosting 彻底移除Service Worker解决缓存问题

一、阻止Flutter构建生成Service Worker

  • 方法1:修改web/index.html,删除默认的Service Worker注册代码:
    找到并移除这段代码:
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', function () {
        navigator.serviceWorker.register('/flutter_service_worker.js');
      });
    }
    
  • 方法2:构建时添加参数禁用Service Worker:
    执行构建命令时加上--no-service-worker:
    flutter build web --no-service-worker
    
    这样输出的build/web目录中不会生成flutter_service_worker.js及相关缓存清单文件。

二、配置Firebase Hosting忽略Service Worker相关文件

修改firebase.json的ignore数组,确保部署时不会上传残留的Service Worker文件:

"ignore": [
  "firebase.json",
  "**/.*",
  "**/node_modules/**",
  "flutter_service_worker.js",
  "asset-manifest.json"
]

三、强制用户浏览器卸载旧Service Worker

在新的web/index.html中添加以下代码,让已访问用户的浏览器自动注销旧的Service Worker:

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.getRegistrations().then(function(registrations) {
    for(let registration of registrations) {
      registration.unregister();
    }
  });
}

这段代码会在用户加载新版页面时,清理所有已注册的Service Worker,确保后续请求直接拉取最新资源。

四、验证缓存配置

  • 确认firebase.json中的headers规则优先级正确,/**的全局规则放在最前面,避免被其他规则覆盖。
  • 部署完成后,打开浏览器开发者工具的Network标签,查看所有资源的Response Headers,确认Cache-Control已设置为no-cache, no-store, must-revalidate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:34:54