Service Worker的updateViaCache配置在Safari中无法正常工作
iOS Safari下Service Worker
updateViaCache: "all"配置不生效问题 我希望应用尽可能减少对服务器的请求,因此在注册Service Worker时使用了updateViaCache: "all"配置。安卓设备上应用不会发起任何额外请求,但iOS设备的Safari浏览器中,每次加载新页面都会请求Service Worker文件。
我查阅过2018年WebKit的问题讨论,其中提到后续上线的补丁会让Safari的行为与Chrome对齐,通过navigator.serviceWorker.register(serviceWorkerUrl, { updateViaCache: "all" })配置可使用磁盘缓存,仅当HTTP缓存中的serviceworker.js过期时才会请求服务器,但实际该配置并未生效。
我的Service Worker注册代码如下:
async function registerServiceWorker() { try { const registration = await navigator.serviceWorker.register( `/service-worker.js?v=${SW_VERSION}`, { updateViaCache: 'all' } ); if (LOG) console.log("Service Worker enregistré avec le scope :", registration.scope); } catch (error) { console.error("Erreur lors de l'enregistrement du Service Worker :", error); } }
注:SW_VERSION用于在Service Worker更新时强制从服务器获取新版本。
内容的提问来源于stack exchange,提问作者ppc
相关产品推荐
相关产品推荐

