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

Angular Service Worker未遵循配置,所有请求被异常缓存

Angular Service Worker 未遵循配置缓存所有API的解决办法

我未在ngsw.json配置中指定需缓存的API地址,但Angular Service Worker却缓存了所有请求;即使强制刷新页面,ngsw-worker.js仍不遵守配置规则:

  • 图1:展示了未在配置中定义却被缓存的API请求
  • 图2:列出了所有从Service Worker获取响应的未配置API

当前ngsw.json配置如下:

{"index": "/index.html","assetGroups": [{"name": "app","installMode": "prefetch","resources": {"files": ["/favicon.ico","/index.html","/manifest.webmanifest","/*.css","/*.js"]}},{"name": "assets","installMode": "lazy","updateMode": "prefetch","resources": {"files": ["/assets/**","/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"]}}],"dataGroups": [{"name": "api-freshness","urls": ["/keycloak.json","/api/user-config/**","/applications/**","/api/services"],"cacheConfig": {"strategy": "freshness","maxSize": 1000,"maxAge": "1d","timeout": "1s"}}]}

解决步骤:

  • 确认Service Worker配置已更新
    打开浏览器DevTools的「Application > Service Workers」,检查当前激活的SW版本是否对应最新的ngsw.json。若不一致,手动点击「Update」按钮,或重新执行ng build --prod构建部署,确保新配置生效。

  • 排查额外缓存逻辑
    检查项目中是否存在自定义SW代码、第三方缓存插件,这些可能会覆盖Angular SW的默认规则;同时确认没有注册额外的Service Worker。

  • 验证配置匹配规则
    检查ngsw.json的dataGroups是否存在意外通配符(比如/**),构建后确认配置文件未被篡改。通过Network面板查看请求的SW相关响应头,确认请求匹配的缓存组。

  • 清除旧缓存与SW注册
    在DevTools的「Application > Storage」中点击「Clear site data」,彻底清除缓存和SW注册信息;也可在控制台执行代码注销SW:

    navigator.serviceWorker.getRegistrations().then(regs => regs.forEach(reg => reg.unregister()))
    

    执行后刷新页面。

  • 检查Angular版本兼容性
    部分旧版Angular存在SW缓存bug,确认当前版本是否有已知问题,必要时升级至稳定版。


内容的提问来源于stack exchange,提问作者M Fahad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:00:30