是否有可能将 service worker 源文件缓存至少 24 小时?我试过提供缓存控制:public,max-age=1440。但它不起作用。
此外,如果页面包含 iframe,并且您单独重新加载该 iframe,则将从服务器下载 sw.js(服务工作脚本)。
知道为什么会这样吗?如何避免这种情况?
是否有可能将 service worker 源文件缓存至少 24 小时?我试过提供缓存控制:public,max-age=1440。但它不起作用。
此外,如果页面包含 iframe,并且您单独重新加载该 iframe,则将从服务器下载 sw.js(服务工作脚本)。
知道为什么会这样吗?如何避免这种情况?
您看到的是由于“ Fresher service workers, by default ”中描述的行为。
特别是,如果您想选择使用 HTTP 缓存来满足您的 service worker 请求(最多 24 小时;之后,它们将始终与网络冲突),您可以使用如下代码:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js', {
updateViaCache: 'all',
});
}