当前位置: 首页 > 知识库问答 >
问题:

服务工作缓存失败

鲁彬炳
2023-03-14

我正在开发一个渐进式web应用程序,目的是缓存所有离线使用的资产。这是我的服务人员

    self.addEventListener('install', function(e) {
        e.waitUntil(
           caches.open('default-cache').then(function(cache) {
              return cache.addAll([
                 '/',
                 '/index.html',
                 '/bundle.js',
                 '/libraries/p5.dom.min.js',
                 '/libraries/p5.min.js',
                 '/libraries/p5.sound.min.js',
                 '/sound/spokesm4v.mp3',
                 '/css/flexboxgrid.min.css',
                 '/images/icon-192.png',
                 '/manifest.json',
            ])
        }).then(function() {
            return self.skipWaiting();
        }));
    });

    self.addEventListener('activate', function(e) {
        e.waitUntil(self.clients.claim());
    });

    self.addEventListener('fetch', function(e) {
        e.respondWith(
            caches.match(e.request).then(function(response) {
                return response || fetch(e.request);
            })
        );
    });

无论我是否在线,服务工作人员都无法缓存一些资产(在本例中bundle.js),并破坏了我的缓存优先系统,即使我在注册工作人员时记录了一条成功消息。

https://postimg.org/gallery/2yo1ig35y/

共有2个答案

江正德
2023-03-14

试着用sw-前置应该更容易

狄灵均
2023-03-14

我看不出bundle缓存失败的问题。但是当打开colorsel时。io我可以在控制台中看到您的软件中存在JavaScript错误。js“未捕获引用错误:事件未在sw.js:27中定义”

如果你有所改变

self.addEventListener('fetch', function(e) {
    e.respondWith(
        caches.match(event.request).then(function(response) {
            return response || fetch(event.request);
        })
    );
});

self.addEventListener('fetch', function(event) {
    event.respondWith(
        caches.match(event.request).then(function(response) {
            return response || fetch(event.request);
        })
    );
});

服务人员应按预期工作。

 类似资料:
  • 我正在使用Service Worker创建一个渐进式Web应用程序,我正在使用Service Worker工具箱来缓存我的内容。Service Worker代码来缓存我的内容: 代码运行正常,因为我在控制台上没有看到任何错误。但是我如何检查是否从云前或上面配置的网址的图像正在缓存和从缓存本身渲染。

  • 我们在reactjs应用程序中安装了离线插件,该应用程序使用service worker缓存构建文件,未检查新构建的任何更新,因此,具有旧构建的用户仍在使用service worker中的缓存数据访问旧站点。这些文件没有过期设置,所以我想知道是否有任何解决方案可以强制用户刷新页面或将更新推给用户? 我在新版本中进行了更新,没有缓存头,离线插件自动更新,但我仍然无法找到将此更新推送到旧用户文件的方法

  • 我试图检查gitubaction上的lint。我的github操作步骤如下 你能帮我修一下吗?

  • 我试图安装一个简单的ServiceWorker,但旧的,Django Web应用程序。我开始使用Chrome团队的示例读取缓存示例 这很好,但并不理想,因为如果需要,我想更新缓存。根据阅读此处所有其他服务人员的答案,有两种推荐方法。 > 使用一些服务器端逻辑来知道您显示的内容何时更新,然后更新您的服务辅助角色以更改所述内容。例如,这就是sw-preache所做的。 只要在需要更新资源时更新serv

  • 因此,我有一个带有服务工作者的HTML页面,服务工作者缓存索引。html和我的JS文件。 问题是当我更改JS时,更改不会直接显示在客户端浏览器上。当然,在chrome开发工具中,我可以禁用缓存。但是在Chrome Mobile,我该怎么做呢? 我试图访问站点设置并点击CLEAR%RESET按钮。但它仍然从缓存加载旧页面/加载。我试图使用其他浏览器或铬隐姓埋名,它加载新的页面。 然后,我尝试清除我的

  • 我建立了一个进步的网络应用,https://www.tavest.com.我不明白为什么我的服务人员也被缓存在Chrome中?https://www.tavest.com/service-worker-tavest.js因此,当我更改服务人员时,chrome没有检测到更改,因此服务人员没有更新。 尽管我刷新了很多次页面,它仍然是一样的。然而,在Mozilla中,它工作得很好。这是我安装服务人员的代