V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wyl986
V2EX  ›  浏览器

鸿蒙的系统浏览器, pwa 网页一直使用 sw 中的静态资源,即使 unregister 了所有的 sw 也无法去除缓存, ios 和 android 都可以,除了鸿蒙,我要怎么办?

  •  
  •   wyl986 · 4 天前 · 660 次点击

    我有一个 PWA 网页,更新了之后,鸿蒙系统的自带浏览器一直不加载最新的代码

    1. 最开始我在 service-worker.js 中使用 skipWaitingcaches.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();
      });
      

      除了鸿蒙以外的设备都是可以正常加载新代码的

      我这边的测试设备是

      • iPhone 13mini ios 18.3.2 + Safari
      • Xperia 1 vi Android 15.0.0_r3 + Chrome 134.0.6998.135
      • win 11 + Chrome 134.0.6998.118
    2. 于是我将 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 中的缓存


    请问现在有什么办法可以去掉鸿蒙的缓存呢?

    我现在想的办法是开一个新的子域名,把老的重定向过去,这样肯定就没缓存了,但是微信开放平台中的那配置都需要重新填

    3 条回复    2025-03-27 13:43:04 +08:00
    SergeGao
        1
    SergeGao  
       3 天前
    找华为官方的技术人员吧
    MacsedProtoss
        2
    MacsedProtoss  
       3 天前 via iPhone
    放弃鸿蒙用户呗 才多少百分比而已
    wyl986
        3
    wyl986  
    OP
       3 天前
    @MacsedProtoss 没办法,老板用的华为全家桶
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:57 · PVG 08:57 · LAX 17:57 · JFK 20:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.