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

Angular Service Worker数据组缓存是否会在软件更新后被删除?

问题解答

该现象确实是NGSW的默认设计逻辑

NGSW的动态数据组缓存默认与应用版本强绑定,你观察到的缓存名称ngsw:/:1:data:dynamic:map:cache中的:1:段就是当前应用的版本标识。每次你发布应用更新、NGSW检测到新版本后,会创建全新的版本隔离缓存空间,旧版本对应的所有缓存(包括动态数据组缓存)会在旧版Service Worker完全下线后被统一清理。

解决方法

方案1:给数据组配置独立版本(推荐)

NGSW的dataGroup配置支持单独设置version字段,该字段会将对应数据组的缓存生命周期和应用本身的版本解绑,只有你主动修改这个version值时,该数据组的缓存才会被清空重建。调整后的配置如下:

{
  "name": "map",
  "urls": ["/map-api/**"],
  "version": 1,
  "cacheConfig": {
    "maxSize": 10000,
    "maxAge": "365d"
  }
}

方案2:原生Cache API自定义管理

如果需要完全自主控制地图缓存的生命周期,可以绕过NGSW直接调用浏览器原生Cache API单独存储地图资源,自行实现缓存的增删逻辑,完全不受NGSW版本更新的影响,注意要避免自定义缓存名和NGSW的缓存命名规则冲突即可。

额外说明

如果没有更新应用时也出现缓存被清理的情况,需要排查是否是站点存储占用超出了浏览器分配的配额,浏览器会在存储空间不足时自动清理非必要的站点缓存,你可以使用navigator.storage相关API查询当前站点的存储配额和使用情况,必要时提前给用户做出提示。


内容的提问来源于stack exchange,提问作者Hodossy Szabolcs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:12:03