首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在渐进式Web应用程序中,Service Worker未自动更新

在渐进式Web应用程序中,Service Worker未自动更新
EN

Stack Overflow用户
提问于 2016-09-06 05:55:51
回答 2查看 4.3K关注 0票数 3

当我在service worker中更改一些代码时,我希望在浏览器中更新以前的service worker。我已经读到,service-worker.js中的任何更改都会在浏览器中自动刷新它。这是我的service worker代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var dataCacheName = 'demo-v5';

var filesToCache = [
  '/',
  '/Home/Index',
  '/Home/AboutUs'  
];
self.addEventListener('install', function (e) {
    console.log('[Service Worker] Install');
    e.waitUntil(
      caches.open(dataCacheName).then(function (cache) {
          console.log('[Service Worker] Caching app shell');
          return cache.addAll(filesToCache);
      })
    );
});
self.addEventListener('activate', function(e) {
    console.log('[ServiceWorker] Activated');
    caches.keys()
    e.waitUntil(

        // Get all the cache keys (cacheName)
        caches.keys().then(function(cacheNames) {
            return Promise.all(cacheNames.map(function(thisCacheName) {

                // If a cached item is saved under a previous cacheName
                if (thisCacheName !== dataCacheName) {

                    // Delete that cached file
                    console.log('[ServiceWorker] Removing Cached Files from Cache - ', thisCacheName);
                    return caches.delete(thisCacheName);
                }
                else
                {
                    console.log('Else- ', thisCacheName);
                }
            }));
        })
    ); // end e.waitUntil

  //  return self.clients.claim();
});

self.addEventListener('fetch', function (e) {
    console.log('[Service Worker] Fetch', e.request.url);
    var dataUrl = 'https://query.yahooapis.com/v1/public/yql';
    if (e.request.url.indexOf(dataUrl) > -1) {
      e.respondWith(
          caches.open(dataCacheName).then(function (cache) {
              return fetch(e.request).then(function (response) {
                  cache.put(e.request.url, response.clone());
                  return response;
              });
          })
        );
    } else {

        e.respondWith(
          caches.match(e.request).then(function (response) {
              return response || fetch(e.request);
          })
        );
    }
});
EN

回答 2

Stack Overflow用户

发布于 2016-09-08 12:58:38

感谢您的回复。实际问题与filesToCache.The根目录有关,即"/“

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var filesToCache = [
//  '/',
'/Home/Index',
'/Home/AboutUs'  
 ];

应该在这里注解。我的服务工作者类也被缓存了,每次刷新后它都会从缓存中提取它。

票数 3
EN

Stack Overflow用户

发布于 2016-09-06 07:07:50

服务工作线程中的更改将反映在页面的第二次刷新中。如果它甚至在第二次刷新时都没有更新,那么在Chrome开发人员控制台中查找服务工作者错误(我希望你已经在使用它)。它将会在

Applications ->服务工作进程

在chrome开发者工具(最新稳定的Chrome版本)中。

单击Ctrl + Shift + IRight click -> Inspect Element打开Chrome开发人员工具。

注意:如果您希望服务工作者在第一次刷新时更新,则将安装事件更改为-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.addEventListener('install', function (e) {
    console.log('[Service Worker] Install');
    e.waitUntil(
      caches.open(dataCacheName).then(function (cache) {
          console.log('[Service Worker] Caching app shell');
          return cache.addAll(filesToCache);
      }).then(function(e){
        return self.skipWaiting();
      })
    );
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39341538

复制
相关文章
Service Worker 实现 web 应用消息推送
Service Worker 是事件驱动的 worker,生命周期与页面无关,关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动.
Fred Liang
2018/10/18
2.4K0
PWA 渐进式Web应用程序
PWA是Progressive Web App的简称,是谷歌提出的新型Web技术,并由W3C及谷歌来推广这项技术,其主要目的是为了提升用户对网站原生使用体验,同时又能节省对网站的开启速度。
Meng小羽
2019/12/24
1.2K0
渐进式 Web 应用程序介绍
构建 PWA 背后的核心思想是为所有设备上的普通 Web 应用程序提供最佳用户体验。当我们通过浏览器访问 Web 应用程序时,整体体验永远赶不上原生应用程序提供的体验。因此,在可用的开放网络技术的帮助下,PWA 为使用最新版本浏览器的用户提供了增强的网络体验,与 Android、iOS 或 Windows 等依赖于操作系统的应用程序相当。
海拥
2023/01/13
1.2K0
浅尝 service worker
最早听说service worker的时候是团队的分享会上,之后就听说了饿了么pwa改造,技术学习的脚步始终不能停。
上山打老虎了
2022/06/14
5570
service worker 使用
每次页面加载成功后,就会调用 register() 方法,浏览器将会判断 service worker 线程是否已注册并做出相应的处理。 scope 参数是可选的,默认值为 sw.js 所在的文件目录。 打开 chrome 浏览器, 输入 chrome://inspect/#service-workers 可以可以用 DevTools 查看 Service workers 的工作情况。
李振
2021/11/26
1.5K0
service worker 使用
Service Worker初探
本文是奇舞团泛前端分享会Service Worker初探的一次记录,是对360扫地机器人App内嵌web页面使用Service Worker优化的一次总结。
陈大鱼头
2020/09/22
1.3K0
Service Worker初探
渐进式Web应用程序的深入概述
如果您是Web开发人员,您可能已经了解渐进式Web应用程序(PWA)或已经实现了自己的应用程序。 如果您不熟悉,本文将深入概述渐进式Web应用程序的实现原理,以及它们在现代Web开发中的重要程度。
葡萄城控件
2018/09/14
1K0
Service Worker的应用
Service worker本质上充当Web应用程序、浏览器与网络(可用时)之间的代理服务器,这个API旨在创建有效的离线体验,它会拦截网络请求并根据网络是否可用来采取适当的动作、更新来自服务器的的资源,它还提供入口以推送通知和访问后台同步API。
WindRunnerMax
2021/12/14
5740
在项目中使用Service Worker 与 PWA
Web Worker 是浏览器内置的线程,用于执行非阻塞事件循环的 JavaScript 代码。由于 JavaScript 是单线程语言,一次只能处理一个任务。复杂任务的出现可能导致主线程被阻塞,严重影响用户体验。Web Worker 的作用是允许主线程创建 worker 线程,使它们可以同时运行。Worker 线程主要负责处理复杂的计算任务,然后将结果返回给主线程。简而言之,worker 线程执行复杂计算,同时保持页面(主线程)的流畅性,不会造成阻塞。
linwu
2023/10/16
5420
在项目中使用Service Worker 与 PWA
Xss Via Service Worker
闲置了很久的东西,在做dicectf2021的Web IDE的时候再次碰到这个东西,特此学学。
HhhM
2022/08/10
4240
Xss Via Service Worker
Service Worker初体验
概述 在讲Service Worker之前先说一下另一个概念:PWA(Progressive Web Apps) Progressive Web App:是一个具有响应式布局的Web应用,可以离线工作,并能够安装到设备的主屏幕上。其实是在主屏幕上添加该Web应用的快捷方式。 Service Worker:一个Service Worker是一段运行在浏览器后台进程里的脚本,他独立于当前页面,提供了那些不需要与web页面交互的功能在网页背后悄悄执行的能力。在将来,基于它可以实现消息推送,静静更新以及地理
xiangzhihong
2018/02/06
1.1K0
Service Worker初体验
Service Worker最佳实践
Service Worker最佳实践 1 Service Worker介绍 Service Worker是一项比较新的Web技术,是Chromium团队在吸收了ChromePackaged App的E
RP道貌不岸然
2017/12/26
2.4K0
[科普] Service Worker 入门指南
Service Workers 本质上是一种能在浏览器后台运行的独立线程,它能够在网页关闭后持续运行,能够拦截网络请求并根据网络是否可用来采取适当的动作、更新来自服务器的的资源,从而实现拦截和加工网络请求、消息推送、静默更新、事件同步等一系列功能,是 PWA 应用的核心技术之一。
Tecvan
2022/05/18
3.5K0
[科普] Service Worker 入门指南
【译】理解Service Worker
PWA是最近前端最火热的一个概念之一,Service Worker为PWA赋能离线可用性以及push消息。
疯狂的技术宅
2019/03/28
1K0
【译】理解Service Worker
Service Worker 全面进阶
腾讯IVWEB团队
2017/03/13
3.6K0
Web Worker
众所周知,JavaScript 是单线程的语言。当我们面临需要大量计算的场景时(比如视频解码等),UI 线程就会被阻塞,甚至浏览器直接卡死。现在前端遇到大量计算的场景越来越多,为了有更好的体验,HTML5 中提出了 Web Worker 的概念。Web Worker 可以使脚本运行在新的线程中,它们独立于主线程,可以进行大量的计算活动,而不会影响主线程的 UI 渲染。当计算结束之后,它们可以把结果发送给主线程,从而形成了高效、良好的用户体验。Web Worker 是一个统称,具体可以细分为普通的 Worker、SharedWorker 和 ServiceWorker 等,接下来我们一一介绍其使用方法和适合的场景。
政采云前端团队
2022/04/27
1.1K0
Web Worker
Web Worker
JavaScript是单线程语言,如果在Js主线程上进行比较耗时的操作,那么不仅异步的事件回调无法正常完成,浏览器的渲染线程也将被阻塞,无法正常渲染页面。Web Worker能够把JavaScript计算委托给后台线程,线程可以执行任务而不干扰用户界面。
WindRunnerMax
2020/08/27
8800
Service Worker和HTTP缓存
很多人,包括我自己,初看Service Worker多一个Cache Storage的时候,就感觉跟HTTP长缓存没什么区别。 例如大家讲的最多的Service Worker能让网页离线使用,但熟悉HTTP缓存的朋友,会发现,把整站所有资源设置为长缓存(不带校验),也可以实现离线使用。 那么,Service Worker在缓存方面和HTTP缓存比较,有什么好处呢? 带着这个疑问,我翻阅了一些大神博客 JakeArchibald的《Caching best practices & max-age gotc
用户1258909
2018/07/03
1.5K1
点击加载更多

相似问题

如何创建Service Worker在渐进式Web应用程序中存储动态内容?

10

在web worker或service worker中运行websocket - javascript

1142

Service worker似乎未更新

10

Service worker未创建networkFirst缓存

112

从service worker中获取service worker id或日期

03
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文