因为javascript是单线程的(注意浏览器不是单线程的, js调用其内部的api也不一定是单线程的, 如定时器), 其只有一个线程用来执行代码, 所以为了避免遇到计算量大、耗时的任务阻塞线程继续往下执行...虽然有事件循环机制, 但其本质上还是在一个单线程上执行, 它在同一时间也只能做一件事情, 如果它正在等待长期运行的同步调用返回,就不能做其他任何事情....Service Workers: 服务线程, 一个注册在指定源和路径下的事件驱动worker, 采用 js 控制关联的页面或者网站,拦截并修改访问和资源请求,细粒度地缓存资源....(保证同源), 会看到worker.js只加载了一次, 下面分别是 index.html 和 index2.html 的 network 情况, 说明两个同源的页面是共享了同一个线程, 并且启动后, 刷新页面也不会重新去初始化...SW 的缓存中获取, 此时将网络断开, 发现缓存的资源仍然可以获取到, 页面仍然可以正常访问
再看看Application的Cache Storage, 可以看到以 key 值 v1 存储的响应缓存,