iOS PWA';添加到主屏幕';缓存在一天后过期

iOS PWA';添加到主屏幕';缓存在一天后过期,ios,caching,service,progressive-web-apps,worker,Ios,Caching,Service,Progressive Web Apps,Worker,我正在用CRA建立一个可安装的PWA。我添加了一个自定义服务工作者,它使用服务工作者缓存API缓存所有外部请求。在第一次请求后,我可以将手机切换到飞行模式,应用程序仍然可以工作,但是当我离开手机上安装的应用程序一天后回来,应用程序不再在脱机模式下工作,而是显示“Safari无法打开页面,因为你的iPhone未连接到互联网” iOS上安装的PWA是否有缓存过期?我做错什么了吗 这是我的服务人员代码: const PRECACHE = "precache-v1"; const RUNTIME = "

我正在用CRA建立一个可安装的PWA。我添加了一个自定义服务工作者,它使用服务工作者缓存API缓存所有外部请求。在第一次请求后,我可以将手机切换到飞行模式,应用程序仍然可以工作,但是当我离开手机上安装的应用程序一天后回来,应用程序不再在脱机模式下工作,而是显示“Safari无法打开页面,因为你的iPhone未连接到互联网”

iOS上安装的PWA是否有缓存过期?我做错什么了吗

这是我的服务人员代码:

const PRECACHE = "precache-v1";
const RUNTIME = "runtime-v2";

const PRECACHE_URLS = [];

this.addEventListener("install", event => {
  event.waitUntil(
    caches
      .open(PRECACHE)
      .then(cache => cache.addAll(PRECACHE_URLS))
      .then(this.skipWaiting())
  );
});

this.addEventListener("activate", event => {
  const currentCaches = [PRECACHE, RUNTIME];
  event.waitUntil(
    caches
      .keys()
      .then(cacheNames => {
        return cacheNames.filter(cacheName => !currentCaches.includes(cacheName));
      })
      .then(cachesToDelete => {
        return Promise.all(
          cachesToDelete.map(cacheToDelete => {
            return caches.delete(cacheToDelete);
          })
        );
      })
      .then(() => this.clients.claim())
  );
});

this.addEventListener("fetch", event => {
  event.respondWith(
    caches.match(event.request).then(cachedResponse => {
      if (cachedResponse) {
        return cachedResponse;
      }
      return caches.open(RUNTIME).then(cache => {
        return fetch(event.request).then(response => {
          return cache.put(event.request, response.clone()).then(() => {
            return response;
          });
        });
      });
    })
  );
});


如果你的设备没有太多额外空间,Safari可能会清理缓存。没错,这就是问题所在!过了一段时间才发现。谢谢