service workers in action · erik witt service workers in action 35 56 mobile building an...

Post on 20-May-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Erik Witt

Service Workers in Action

35

56

Mobile

Building an Offline-Capable

Webshop in under 90 minutes

Page: https://bit.ly/2p7bA2X

Repository:

https://github.com/ErikWitt/code-talks19

https://bit.ly/2p7bA2X

Fast Loadsthrough Caching

Offline Mode (Synchronization)

Add-to-Homescreenand Push Notifations

+ +

••

••

Supported by >90% of browsers.

Requires TLS Encryption.

self.addEventListener('install', (event) => {// Perform install steps

});

self.addEventListener('activate', (event) => {// Perform activate steps

});

self.addEventListener('fetch', (event) => {// React to fetch event

});

// Send message to browser tabconst client = await clients.get('id');client.postMessage(someJsonData);

self.addEventListener('push', (event) => {// Receive push notification

});

self.addEventListener('message', (event) => {// Receive message

});

// Default (and maximum) scope is location of Service Worker// Gets all requests starting with '/path/'navigator.serviceWorker.register('/path/sw.js');

// Scope option can further limit which requests got to Service Worker// Gets all requests starting with '/path/subpath/'navigator.serviceWorker.register('/path/sw.js', { scope: '/path/subpath/' });

self.addEventListener('fetch', (event) => {// React to fetch eventconst { url } = event.request;event.respondWith((async () => {const request = new Request(url.replace('.com', '.de'))const response = await fetch(request);const text = await response.text();const newText = text.replace('Goethe', 'Schiller');return new Response(newText, { status: 200 });

})());});

••

Example

>25% cache hits on HTML in production

1500 entries & 0.0019% false positives → 7 KB size

HTML

JS

CSS

HTML

JS

CSS

HTML

0 1 2 3 4 5 6 7 8 9 10

Perc

enta

ge o

f Tr

affi

c

First Paint in Seconds

*comparing appelrath.com Chrome UX report data from October 2018 with January 2019

*

Recommended Books

https://jakearchibald.com/

https://developers.google.com/web/progressive-web-apps/

Guides & Tutorials

https://blog.baqend.com/

Blogs

https://www.igvita.com/

https://developer.mozilla.org/en-US/docs/Web/Apps/Progressive

top related