
我有一个 PWA 网页,更新了之后,鸿蒙系统的自带浏览器一直不加载最新的代码
最开始我在 service-worker.js 中使用 skipWaiting 和 caches.delete 来手动控制缓存,这是我最开始在 service-worker.js 中就有的代码,我使用 service-worker 主要是为了可以在网页离线的时候推送通知
// 处理缓存 // 添加 install 和 activate 事件处理,确保不使用缓存 self.addEventListener('install', () => { self.skipWaiting(); }); self.addEventListener('activate', (event) => { event.waitUntil( caches.keys().then((cacheNames) => { return Promise.all( cacheNames.map((cacheName) => { // 删除所有缓存 return caches.delete(cacheName); }), ); }), ); self.clients.claim(); }); 除了鸿蒙以外的设备都是可以正常加载新代码的
我这边的测试设备是
于是我将 service-worker.js 的内容替换为
self.registration.unregister(); 并在 src/index.ts 中添加了
if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then((registrations) => { for (const registration of registrations) { registration.unregister(); } }); } 并在 nginx 中添加了响应头
add_header Cache-Control "no-cache"; 鸿蒙中仍然是加载的 sw 中缓存的静态资源( js/css)
鸿蒙自带浏览器只有在无痕模式下打开网页才能加载最新的代码
残血鸿蒙和满血鸿蒙都有这个问题,试了 5 台鸿蒙设备
甚至于在浏览器中手动清除网页缓存后仍然是加载的 sw 中的缓存
请问现在有什么办法可以去掉鸿蒙的缓存呢?
我现在想的办法是开一个新的子域名,把老的重定向过去,这样肯定就没缓存了,但是微信开放平台中的那配置都需要重新填
1 SergeGao 272 天前 找华为官方的技术人员吧 |
2 MacsedProtoss 272 天前 via iPhone 放弃鸿蒙用户呗 才多少百分比而已 |
3 wyl986 OP @MacsedProtoss 没办法,老板用的华为全家桶 |