0

我创建了一个应用程序create-react-app默认作为一个渐进的网络应用程序(它加载此file)。服务工作者多久刷新一次?

因此,现在每次部署新内容时,应用程序都不刷新。在提供缓存内容之前,它多久检查一次新内容?我怎样才能选择多少时间来保存缓存?

回答

0

根据此documentation,默认情况下,除非页面请求本身通过服务工作人员,否则页面的提取不会通过服务工作人员。因此,您需要刷新页面以查看服务工作人员的效果。

下面是一个例子,它在3秒后添加一只狗的图像。

<!DOCTYPE html> 
An image will appear here in 3 seconds: 
<script> 
    navigator.serviceWorker.register('/sw.js') 
    .then(reg => console.log('SW registered!', reg)) 
    .catch(err => console.log('Boo!', err)); 

    setTimeout(() => { 
    const img = new Image(); 
    img.src = '/dog.svg'; 
    document.body.appendChild(img); 
    }, 3000); 
</script> 

此外,根据本Updating your service worker,如果以前已经安装在你的服务工作人员,但随后的工人的一个新的版本可以在刷新或网页加载时,安装新版本的背景,但不但被激活。只有在加载的页面不再有仍在使用旧服务工作者的情况下才会激活它。一旦没有更多这样的页面被加载,新的服务工作者就会激活。

0

我不知道服务工作人员代码的详细信息......但是 您预先存储的资产(通常是安装事件)在那里,除非您清除它们。 其他URL将通过提取事件处理程序(如果没有附加处理程序,则直接进入网络)。 更新预先缓存的逻辑将不会更新,直到您更新服务工作者。每个版本的服务工作人员只能触发一次安装和激活事件,因此每个版本只能触发一次。 因此,您可以更改默认预先限制的资产(url)并更改缓存逻辑或将哪些文件预缓存到配置源并动态更新这些资产。 因为我不知道你的应用程序的目标是什么,所以很难给出你的问题的实际答案。