浏览器重启后,iOS 12 CacheStorage API被删除

时间:2018-10-31 14:03:59

标签: ios service-worker progressive-web-apps ios12 cachestorage

我目前正在为iOS开发一个脱机网络应用程序。它使用ServiceWorker和CacheStorage API离线存储应用程序代码。

在iOS 11中,一切正常。 从iOS 12开始,每次重新启动浏览器时,都会清除CacheStorage。

我就如何重现此内容进行了一些演示: 它向您显示页面/主机上有哪些缓存,然后创建一个带有图片的新缓存。因此,下次访问时,应该已有一个缓存。

  1. 转到https://itoobi.github.io/servicebreaker/
  2. 页面上显示“键:大小:0”(当前有0个缓存)
  3. 它将创建一个名为“ test”的新缓存,并显示“缓存已打开”。
  4. 重新加载页面
  5. 页面现在显示“键:测试大小:1”(已有1个缓存)(然后再次“打开缓存”,但这在这里并不重要)
  6. 关闭浏览器(通过在iOS任务管理器中关闭浏览器)
  7. 重新启动浏览器并重新加载页面
  8. 现在应该再次说“键:测试大小: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设备上进行了测试。

问题是:有人知道我在做什么错吗,苹果是否更改了API,或者这仅仅是苹果方面的错误? 如果有人遇到类似的问题,这也会引起我的兴趣,因为我没有发现与此相关的任何东西。


测试页代码:

<!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 :(得分:0)

您是否尝试安装(将其置于主屏幕),也许可以解决该问题。