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

负载均衡后部署的Flutter Web Service Worker无法激活问题咨询

解决方案

方案1:保留加载动画、完全禁用Service Worker(推荐,适配纯在线应用场景)

你是纯在线应用不需要SW的离线缓存能力,直接禁用即可彻底解决问题,且你自定义的加载动画完全不受影响,操作分两种可选:

  • 构建时直接禁用:执行构建命令时添加--pwa-strategy none参数,完整命令示例:
    flutter build web --release --web-renderer html --pwa-strategy none
    
    构建生成的index.html会自动移除所有SW相关逻辑,你之前添加的加载动画代码不会被覆盖,直接部署即可。
  • 直接修改现有index.html:如果你不想重新构建,直接把你贴出的整段if ('serviceWorker' in navigator) { ... }代码删除,替换为下面的代码即可:
    window.addEventListener('load', function () {
      loadMainDartJs();
    });
    
    替换后SW不会再被注册,不会触发多余资源加载,页面加载逻辑直接走原生JS加载main.dart.js,可靠性大幅提升。

方案2:保留Service Worker的修复方案

如果你需要保留SW的缓存能力,按以下步骤修复即可:

  1. 解决NOTICE文件404问题:IIS默认不支持无后缀文件的返回,你可以在IIS站点的MIME类型配置中,新增一条规则:
    • 文件扩展名:.
    • MIME类型:text/plain
  2. 配置SW文件无缓存:在IIS的HTTP响应头配置中,给flutter_service_worker.js文件添加Cache-Control: no-cache规则,避免负载均衡缓存旧版本SW文件导致安装失败。
  3. 检查负载均衡配置:确认SW文件的传输没有被压缩、篡改,且返回的HTTP状态码为200,没有被重定向。

本地运行正常是因为nginx默认支持无后缀文件返回,且默认不会缓存SW文件,所以不会触发问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:24:02