Angular 14 Firebase部署后用户加载旧缓存版本问题求助
Angular 14 SPA部署Firebase后缓存旧版本问题
我有一个部署在Firebase上的Angular 14单页应用(SPA),遇到了用户访问时加载缓存的旧版本而非最新版本的问题。
问题重现步骤
- 用户打开应用,当前为
v1.0.0版本 - 我部署新版本
v2.0.0 - 用户再次打开应用,仍加载
v1.0.0版本(推测来自缓存),但刷新页面后会加载v2.0.0
预期行为
- 用户打开应用,当前为
v1.0.0版本 - 我部署新版本
v2.0.0 - 用户再次打开应用时直接加载
v2.0.0版本,无需手动刷新
排查过程
最初我认为是PWA Service Worker导致该问题,了解到PWA的Service Worker会在应用打开后获取新版本,下次启动时更新,可通过swUpdate.available.subscribe通知用户并调用location.reload()强制刷新,但我不想采用此方案,因此移除了PWA。
现在应用仅为普通SPA(无PWA),且已通过以下代码注销Service Worker、删除缓存(浏览器中也已确认无Service Worker、manifest等),但问题依然存在:
if ("caches" in window) { caches.keys().then(function (keyList) { return Promise.all( keyList.map(function (key) { return caches.delete(key); }) ); }); } if (window.navigator && navigator.serviceWorker) { navigator.serviceWorker.getRegistrations().then(function (registrations) { for (let registration of registrations) { registration.unregister(); } }); }
我的build脚本配置如下:
{ ... "build": "ng build --configuration production --aot --output-hashing=all" ... }
内容的提问来源于stack exchange,提问作者sergiuwaxmann
相关产品推荐
相关产品推荐

