Home > Web Front-end > JS Tutorial > body text

New JavaScript knowledge: service workers

阿神
Release: 2017-01-24 14:30:41
Original
1362 people have browsed it

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
Copy after login

The content of the file index.html is:

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

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)
          });
        })
      );
    });
Copy after login

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>
Copy after login

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

npm i http-server 
    http-server
Copy after login

Visit:

http://localhost:8080/index.html
Copy after login

and

http://localhost:8080/b.html
Copy after login

Then, close the http server and visit

 http://localhost:8080/b.html
Copy after login

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
Copy after login

You can see more details like this:

 chrome://serviceworker-internals/
Copy after login

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
Copy after login
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template