Home  >  Article  >  Web Front-end  >  New JavaScript knowledge: service workers

New JavaScript knowledge: service workers

阿神
阿神Original
2017-01-24 14:30:411289browse

Front-end technology is approaching desktop technology, and one of the most important ones is service workers, which make it possible for HTML Apps to work offline. This article will illustrate this technology with a simple case code. The tools I use:

1. The browser version is chrome 55

2. Server system: Node 5.0

We need to prepare 3 files:

touch  index.html b.html sw.js

The content of the file index.html is:

  <script>
    if (&#39;serviceWorker&#39; in navigator) {
      navigator.serviceWorker.register(&#39;/sw.js&#39;);
    }    </script>

It registers a service worker, the file name is sw.js, a JavaScript code file. So the really key file is sw.js, its content is:

   const cacheName = &#39;v1::static&#39;;    self.addEventListener(&#39;install&#39;, e => {
      e.waitUntil(
        caches.open(cacheName).then(cache => {          return cache.addAll([            &#39;/&#39;,
          ]).then(() => self.skipWaiting());
        })
      );
    });    self.addEventListener(&#39;fetch&#39;, event => {
      event.respondWith(
        caches.open(cacheName).then(cache => {          return cache.match(event.request).then(res => {            return res || fetch(event.request)
          });
        })
      );
    });

As an event, install will be called when ServiceWorker is loaded for the first time. Here you can do some initialization work. Typical The job is to load files that will be needed offline into the cache. Here we specify "/" so any content will be cached.

The second event is fetch, which will be called when accessing remote resources. A match can be made here. If there is a resource in the cache, the resource in the cache will be returned, otherwise it will be fetched remotely.

The third file b.html is a file to demonstrate the offline effect. The content is:

<h1>serviceWorker B</h1>

Although you can install the http server and execute it in the current path:

npm i http-server 
    http-server

Visit:

http://localhost:8080/index.html

and

http://localhost:8080/b.html

Then, close the http server and visit

 http://localhost:8080/b.html

again, and you can actually access~, and this is the effect of offline implementation.

Well, if you want to check the running status of service workers, you can also use the following url:

 chrome://inspect/#service-workers

You can see more details like this:

 chrome://serviceworker-internals/

You can see it here Start, cancel registration and other operations.

You can check its implementation, but it’s not that optimistic:

http://caniuse.com/#feat=serviceworkers
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn