Service Worker Life Cycle “Install” #pwanight
by
tiwu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Service Worker Life Cycle “Install” Wataru Taguchi
Slide 2
Slide 2 text
アジェンダ - 自己紹介 - Service Worker Life Cycle - Install - Activated - まとめ
Slide 3
Slide 3 text
自己紹介 # Wataru Taguchi - GameWith Front End Engineer - PWAとかWeb Componentsとかパフォーマンス チューニングが好き - @tiwu_official - FF14, Beer, Kyoto Animation
Slide 4
Slide 4 text
https://developers.google.com/web/fund amentals/primers/service-workers/lifecyc le?hl=ja Service Worker Life Cylce
Slide 5
Slide 5 text
- Service Workerが最初に取得するイベント - Service Worker毎に1度だけしか呼ばれない - 1Byteでもコードを修正したService Workerは別扱いされて、再 びinstallが実行される - 必要なリソースをキャッシュに貯めるのによく使われる Install
Slide 6
Slide 6 text
- Install後に発火するイベント - Installと同様Service Worker毎に1度だけしか呼ばれない - 古いキャッシュを削除するのによく使われる Activated
Slide 7
Slide 7 text
注意点 Activated != Service Workerによる制御開始 ↓ 初回アクセス時にSWの制御が開始されない
Slide 8
Slide 8 text
初回アクセス hoge.htmlにアクセス SWのregister install activated activated後にcss,js,imgをネットワークから取得しようとしても fetchイベントは発火しない
Slide 9
Slide 9 text
2回目のアクセス hoge.htmlにアクセス SWのregister activatedされたSWがあれば SWによる制御開始 2回目のアクセスは制御が開始されているので css,js,imgなどのfetchイベントは発火する
Slide 10
Slide 10 text
サンプル installイベント内で、htmlとimgをキャッシュに貯める loadイベント発火の3秒後にimgを表示する fetchイベントでキャッシュにあればキャッシュを返す
Slide 11
Slide 11 text
サンプル https://service-worker-sample.netlify.com/
Slide 12
Slide 12 text
初回アクセス installイベント内でhtmlとimgを取得してキャッシュ その後imgを表示するが、SWの制御が開始されていないので キャッシュに存在するが、ネットワークから取得
Slide 13
Slide 13 text
2回目のアクセス キャッシュに溜まっているのでHTMLはfetchイベントでキャッシュから返す 2回目なのでinstallは実行されず、HTML,imgの取得は行わない imgはキャッシュにあるので、fetchイベントでキャッシュから返す
Slide 14
Slide 14 text
サンプル ちょっと待てよ?
Slide 15
Slide 15 text
2回目のアクセス hoge.htmlにアクセス SWのregister activatedされたSWがあれば SWによる制御開始 2回目のアクセスは制御が開始されているので css,js,imgなどのfetchイベントは発火する
Slide 16
Slide 16 text
2回目のアクセス hoge.htmlにアクセス SWのregister activatedされたSWがあれば SWによる制御開始 2回目のアクセスは制御が開始されているので css,js,imgなどのfetchイベントは発火する 2回目のHTMLをキャッシュが返していた 制御開始されてないのに、制御が開始されている!?
Slide 17
Slide 17 text
https://developers.google.com/web/fundamentals/primer s/service-workers/lifecycle?hl=ja
Slide 18
Slide 18 text
https://developers.google.com/web/fundamentals/primer s/service-workers/lifecycle?hl=ja
Slide 19
Slide 19 text
つまり 初回アクセス時は、 ページの遷移はfetchで捕まえられる
Slide 20
Slide 20 text
初回アクセス時のSW制御 初回アクセス時もcss,js,imgを fetchで捕まえたい!
Slide 21
Slide 21 text
初回アクセス時のSW制御 clients.claim()
Slide 22
Slide 22 text
- Install,Activatedが実行されてもSWの制御は開始されない - css,js,imgをfetchで捕まえられない - ただし、ページの遷移はfetchで捕まえられる - 初回アクセス時もcss等を捕まえたい場合はclient.claim() まとめ
Slide 23
Slide 23 text
ご清聴ありがとうございました