Кэширование с работниками сферы обслуживания - Chrome & Android Webview - PullRequest
1 голос
/ 24 мая 2019

Я работаю над старым приложением, которое использовало ApplicationCache для работы в автономном режиме.Из-за его устаревания мы хотели бы перейти к Service Workers для достижения той же цели.

Firefox 67 очень хорошо работает с моей текущей реализацией работника сервиса: когда я впервые получаю доступ к приложению, каждый файл отображается как 'быть кэшированным »эффективно загружается и кэшируется.После этого к приложению можно получить доступ в автономном режиме.

Тем не менее, Chrome 74 и Android WebView (который выглядит как основанный на Chrome 73 - внутри приложения Cordova) имеют немного другой набор.Когда я впервые получаю доступ к приложению, в файл cache помещается запрос на файл «для кэширования».Навигация по приложению прекрасно работает, когда я в сети.Но затем я переключаюсь в автономный режим, и теперь доступны только те страницы, к которым я уже обращался.

Это ошибка или функция?Что бы это ни было, есть ли обходной путь?

1 Ответ

1 голос
/ 28 мая 2019

Наконец, вот что я понял: Firefox сравнивает кэшированные ресурсы по их URL (string). Таким образом, предоставление списка URL-адресов (string) достаточно для того, чтобы Firefox кешировал их и позже получал их с помощью объекта Request (отправляется при просмотре веб-приложения).

Chrome, по-видимому, сравнивает кэшированные ресурсы по другому значению (мне не удалось найти какое). Затем, предоставление списка URL (string) было недостаточно для Chrome. Request объекты и URL (string) не были распознаны как одинаковые.

Основываясь на спецификации W3C cache.addAll метод , поведение Chrome должно быть правильным. Но поведение Firefox проще.

...