Android с Google Chrome PWA очищает кэш маршрутов при перезапуске приложения - PullRequest
0 голосов
/ 05 января 2020

Я настроил сервисного работника, который выглядит ниже

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).

Преобразование работает отлично. Однако у меня есть проблема с файлом app.nocache. js GWT. Я зарегистрировал маршрут для этого указанного c файла, чтобы он обновлялся при обновлении приложения.

Однако кэш для маршрутизации (НЕ предварительный кэш) очищается, если я выключаю приложение на Android и перезапустите его снова в автономном режиме. Это означает, что если я перезапущу планшет в автономном режиме, мое приложение не сможет запуститься.

Когда я выполняю аналогичный тест на рабочем столе, ie. выключите браузер, отсоедините сетевой кабель и затем снова запустите браузер, затем приложение запустится нормально (Ma c ОС Catalina, Chrome 79.0.3945.88).

Когда я устанавливаю страницу как приложение , выключите Chrome и запустите приложение с отключенным сетевым кабелем, как если бы это было обычное установленное приложение, тест также ПРОЙДЕТ.

Когда я делаю точно такой же тест на Android, но с вкладкой браузера а не приложение PWA, запущенное с рабочего стола, затем тест также проходит.

Кроме того, перевод приложения в фоновый режим на Android не приводит к сбою теста.

Я использую рабочая коробка 4.3.1. Я использую Chrome 79.0.3945.93 на Android планшете (также пробовал с Chrome Beta - то же самое поведение).

Я не уверен, является ли это спецификацией рабочей области c. Это могут быть некоторые причуды низкого уровня PWA-устройства.

Одна заметка. Примерно 1 из 10 раз я заставляю его работать в этом сценарии PWA / Android, который не работает большую часть времени. Это может указывать на какое-то состояние гонки.

...