重新启动应用程序时,带有Google Chrome PWA的Android会清除路由缓存

时间:2020-01-05 20:40:36

标签: workbox

我已经配置了如下所示的服务人员

importScripts('../workbox/workbox-sw.js');

workbox.setConfig({
    modulePathPrefix: '../workbox/',
    debug: true
});

if (workbox) {
    console.log(`Workbox is loaded`);
    workbox.core.skipWaiting();
    workbox.core.clientsClaim();
    workbox.routing.registerRoute(
        new RegExp('app.nocache.js'),
        new workbox.strategies.StaleWhileRevalidate({cacheName: 'my-cache-name'
        })
    );
    workbox.precaching.precacheAndRoute([
        { url: '0E0C4EA07B15355F28CED29C876DF3EE.c.html', revision: '3.6.3-SNAPSHOT'},
...
    ], {
        ignoreURLParametersMatching: [/.*/]
    });
} else {
    console.log(`Workbox didn't load`);
}

用于基于GWT的应用程序。这意味着服务工作者是通过iframe运行的代码注册的(我已从GWT的置换html中加载了代码)。

预缓存效果很好。但是我确实对GWT的app.nocache.js文件有问题。我已经为此特定文件注册了一条路由,以便在升级应用程序时得到更新。

但是,如果我关闭了Android上的应用程序并在离线状态下重新启动该应用程序,则会清除路由缓存(不预缓存)。这意味着,如果我在离线时重新启动平板电脑,则我的应用无法启动。

当我在台式机上进行类似测试时,即。关闭浏览器,拔下网络电缆,然后再次启动浏览器,然后应用程序启动正常(Mac OS Catalina,Chrome 79.0.3945.88)。

当我将页面安装为应用程序时,请关闭Chrome并在拔下网络电缆的情况下启动该应用程序,就像它是常规安装的应用程序一样,测试也会通过。

当我在Android上进行完全相同的测试时,但使用浏览器选项卡而不是从桌面启动PWA应用程序时,则该测试也会通过。

此外,将应用程序置于Android的后台也不会导致测试失败。

我正在使用工作箱4.3.1。 我在Android平板电脑上使用Chrome 79.0.3945.93(也尝试过Chrome Beta-相同的行为)。

我不确定这是否特定于工作箱。可能是一些低级的PWA设备怪癖。

一个音符。在10倍的时间内,我确实能使它在大多数情况下无法正常工作的PWA / Android方案中工作。这可能表明某种种族状况。

0 个答案:

没有答案