SDK 升级后 Flutter Web 中的错误图标

Wrong icons in Flutter Web after SDK upgrade

在 SDK 升级后重建我的 Flutter Web 应用程序时,访问过该应用程序以前版本的浏览器现在显示错误的图标。在这些浏览器中清除浏览数据时问题消失(但这显然不是所有访问者的解决方案)。

我的假设是 main.dart.js 使用来自服务器的最新版本正确刷新,但 MaterialIcons-Regular.otf 仍然从浏览器磁盘缓存加载。

这个解释有意义吗?

有什么办法可以避免这个问题吗?

使用示例应用重现问题的步骤:

  1. 使用 Flutter 2.0.0 创建和构建 Flutter Web 应用程序,并将其部署到 Web 服务器上
  2. 使用浏览器访问应用
  3. 使用 Flutter 2.2.1 重建应用程序,并部署它
  4. 在浏览器中刷新应用程序

当 service worker 尝试刷新图标文件时,浏览器从磁盘缓存中获取它,而不是请求服务器。为避免这种情况,我修改了 Web 服务器的配置以在响应中添加“无缓存”headers,并强制浏览器在 service worker 请求时从服务器获取文件。

在 Apache Virtualhost 的配置中,我添加了:

    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0