You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:22:15