阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Service worker

      问题

      Service worker

      答案

      Service workers 本质上充当Web应⽤程序与浏览器之间的代理服务器,也可以在⽹络可⽤时作为浏览器和⽹络间的代理。它们旨在(除其他之外)使得能够创建有效的离线体验,拦截⽹络请求并基于⽹络是否可⽤以及更新的资源是否驻留在服务器上来采取适当的动作。他们还允许访问推送通知和后台同步API

      ⽬前该技术通常⽤来做缓存⽂件,提⾼⾸屏速度,可以试着来实现这个功能

      // index.js
      if (navigator.serviceWorker) {
          navigator.serviceWorker
          .register("sw.js")
          .then(function(registration) {
              console.log("service worker 注册成功");
          })
          .catch(function(err) {
              console.log("servcie worker 注册失败");
          });
      }
      
      // sw.js
      // 监听 `install` 事件,回调中缓存所需⽂件
      self.addEventListener("install", e => {
          e.waitUntil(
              caches.open("my-cache").then(function(cache) {
                  return cache.addAll(["./index.html", "./index.js"]);
              })
          );
      });
      // 拦截所有请求事件
      // 如果缓存中已经有请求的数据就直接⽤缓存,否则去请求数据
      self.addEventListener("fetch", e => {
          e.respondWith(
              caches.match(e.request).then(function(response) {
                  if (response) {
                      return response;
                  }
                  console.log("fetch source");
              })
          );
      });
      

      打开⻚⾯,可以在开发者⼯具中的 Application 看到 Service Worker 已经启动了

      更多面试题

      如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。

      面试题
      HTMLCSSJavaScript
      jQueryVue.jsReact
      算法HTTPBabel
      BootStrapElectronGulp
      Node.js前端经验相关前端综合
      Webpack微信小程序-

      这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!

      目录
      目录