强制刷新 manifest.json 以下载新的 PWA。

7

我将 start_url 设置为 /mysite,现在我已经更新了清单文件,将 start_url 设置为/mysite?tracking=ga 以便查看应用的安装情况。

但是我无论如何都想不出如何强制下载新的应用程序,应用程序仍然指向旧的 start_url。我知道如何更新服务工作者并清除缓存API或任何其他缓存,但没有可靠的方法来强制刷新 manifest.json,从而强制下载新的apk。即使我删除了apk并通过“添加到主屏幕”下载新的应用程序,它也会指向旧的 `start_url。 我的理解是每个清单都需要一个新的apk。

*更新:进行了多次测试,我更新了清单文件的主题颜色,唯一查看更改的方法是卸载应用程序并彻底清除Chrome缓存和数据,然后通过“添加到主屏幕”提示重新安装。

5个回答

10

请参考链接

引用该链接内容如下:

桌面 Chrome 更新

当启动 PWA 或在浏览器标签中打开时,Chrome 会确定本地清单文件上次检查变化的时间。如果自浏览器上次启动以来未检查清单文件,或在过去的 24 小时内未进行检查,则 Chrome 会发出网络请求以获取清单文件,并将其与本地副本进行比较。

如果清单文件中某些属性已更改(请参见下面的列表),则 Chrome 会安排新清单文件,并在所有窗口关闭后进行安装。安装完成后,新清单文件中除“name”、“short_name”、“start_url”和“icons”之外的所有字段都将被更新。

哪些属性会触发更新?

  • display
  • scope
  • shortcuts
  • theme_color
  • file_handlers

Android Chrome 更新

当启动 PWA 时,Chrome 会确定本地清单文件上次检查变化的时间。如果在过去的 24 小时内未检查清单文件,则 Chrome 会计划一个网络请求以获取清单文件,并将其与本地副本进行比较。

如果清单文件中某些属性已更改(请参见下面的列表),则 Chrome 会安排新清单文件,并在关闭 PWA 的所有窗口、插入设备并连接到 WiFi 后,从服务器请求更新的 WebAPK。更新后,新清单文件中的所有字段都将被使用。

哪些属性会触发更新?

  • background_color
  • display
  • orientation
  • scope
  • shortcuts
  • start_url
  • theme_color
  • web_share_target

在大多数情况下,PWA 启动后一两天内应该会反映出变化,因为清单文件已更新。


2
通常情况下,我们会将答案粘贴在回复中,而不是直接提供链接,因为链接可能会失效。 - Ulysse Mizrahi

6

快速且简单!

首先找到站点上的manifest.json文件,例如domain.com/manifest.json。 然后进行硬刷新(在PC上按下ctrl刷新按钮)。

我不能百分之百确定它是否适用于已安装的WebApp,但理论上应该可以在所有设备上已安装的WebApp上运行。


更好的格式,如编号列表,可以更好地区分步骤,并且看起来简洁而吸引人。 - Nishant Jalan

0

对我来说,使用Ctrl+F5强制刷新清单文件,然后清除应用程序存储解决了问题。

clear application storage


0

我已经进行了一些测试,包括(1)卸载当前的PWA,(2)清除浏览器数据和缓存,以及(3)重新安装PWA,这似乎强制刷新了。然而,当然这只是为了测试目的 - 我想你不可能指示所有应用程序用户执行相同的操作。

除了通过链接提供的答案之外,我还想强调,在Chrome 75及更早版本中,WebAPK更新发生在3天间隔。在Chrome 76(2019年7月)及更高版本中,更新间隔缩短为1天。当计时器到期时,将检查应用程序是否需要更新manifest - 这将在启动应用程序时完成。

以下是更新的原因:

enum UpdateReason {
    NONE = 1;
    OLD_SHELL_APK = 2;
    PRIMARY_ICON_HASH_DIFFERS = 3;
    SCOPE_DIFFERS = 5;
    START_URL_DIFFERS = 6; // OP's scenario
    SHORT_NAME_DIFFERS = 7;
    NAME_DIFFERS = 8;
    BACKGROUND_COLOR_DIFFERS = 9;
    THEME_COLOR_DIFFERS = 10;
    ORIENTATION_DIFFERS = 11;
    DISPLAY_MODE_DIFFERS = 12;
    WEB_SHARE_TARGET_DIFFERS = 13;
    MANUALLY_TRIGGERED = 14;
    PRIMARY_ICON_MASKABLE_DIFFERS = 15;
    SHORTCUTS_DIFFER = 16;
    SPLASH_ICON_HASH_DIFFERS = 17;

    reserved 4;
}

-4

修改您网站页面头部文档内的代码:

<link rel="manifest" href="manifest.json">

变更为:

<link rel="manifest" href="manifest.json?v=2">

这样可以替换您新清单文件的缓存。


7
不要更改清单的URL /名称,参见已接受答案中的链接:“仅当Web Manifest URL未更改时,Chrome才会更新WebAPK。如果您将网页从引用/manifest.json更改为引用/manifest2.json,WebAPK将不再更新。(不要这样做!)”https://developers.google.com/web/fundamentals/integration/webapks#update-webapk - REJH
如文档所述:“注意”- 不要更改您的 Web 应用程序清单文件的名称或位置,否则可能会阻止浏览器更新您的 PWA。 - wlarcheveque
你可能认为这会起作用,但对于PWA来说并非如此。请参考被接受的答案。 - Reggie Pinkham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接