iOS 12 CacheStorage API удаляется после перезапуска браузера - PullRequest
0 голосов
/ 31 октября 2018

Я сейчас разрабатываю офлайн-веб-приложение для iOS. Он использует API ServiceWorker и CacheStorage для хранения кода приложения в автономном режиме.

В iOS 11 все работало нормально. Начиная с iOS 12, CacheStorage очищается при каждой перезагрузке браузера.

Я создал небольшую демонстрацию о том, как воспроизвести это: Он показывает, какие кэши есть на странице / хосте, а затем создает новый кэш с изображением в нем. Поэтому в следующий раз, когда вы посетите его, должен быть существующий кеш.

  1. Перейти к https://itoobi.github.io/servicebreaker/
  2. На странице написано "keys: size: 0" (0 кешей сейчас)
  3. Создает новый кеш под названием «test» и говорит «кеш открыт».
  4. Перезагрузить страницу
  5. Теперь на странице написано «ключи: тестовый размер: 1» (1 кэш существует) (и снова «кэш открыт», но это не важно)
  6. Закройте браузер (закрыв его в диспетчере задач iOS)
  7. Перезапустите браузер и перезагрузите страницу
  8. Теперь должно снова появиться «keys: test size: 1», поскольку там должен быть существующий кеш. -> на iOS 12, страница снова говорит "ключи: размер: 0" здесь.

Я тестировал в настольных браузерах, включая последние версии Chromium и Firefox, которые работают.

В iOS 11.4.x Safari все работает. В iOS 12.x (12.0, 12.1, 12.1 beta 5) Safari он не работает. Протестировано на разных устройствах iPad и iPhone.

Итак, вопрос: кто-нибудь знает, что я делаю неправильно, Apple изменила API или это просто ошибка на стороне Apple? Мне также было бы интересно, если у кого-то есть подобные проблемы, так как я не нашел ничего связанного с этим.


код тестовой страницы:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>Home Page</title>
 </head>
 <body>
    <script>
        caches.keys().then(function(keys){
            alert("keys: "+keys+" size: "+keys.length);
        });
        caches.open("test").then(function(cache){
            cache.add("mario.png");
            alert("cache opened");
        });
    </script>
  </body>
</html>

1 Ответ

0 голосов
/ 31 октября 2018

Вы пытались установить (Поставьте его на домашний экран), возможно, это исправит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...