SlideShare une entreprise Scribd logo
1  sur  31
Cache 自由自在
2018/05/31
JAG-WWG
3 Month Road to PWA
自己紹介
進藤 龍之介
エンジニア/日本Androidの会
Web Working Group PWA 集中勉強会主催
www.crowdfarm.jp 運営
Twitter @ryu_compin
Fb ryushindo
PWA、もうやってますか?
今日の主人公はcache
始めに少しPWAの構造から
PWAの動作
キャッシュとオンラインコンテンツをService
Workerが仲立ち
Cache
Online
Service Worker
キャッシュをどう扱うか
• そもそものキャッシュの目的
• 高速化
• ネットワークの節約、オフライン対応
• 考慮点
• 更新の反映
• インタラクティブなコンテンツ
キホン
• Cache first
• Network first
• No cache
Cache API
• match / matchAll
• add / addAll
• put
• delete
• keys
Cache API
• 有効期限的なものはありません。
• だからほっといても消えません。
• 同期、更新、削除は自分でやります。
サイト構成によるCache制御
• SPA
• AppShell 部分とそれ以外に明確に分けられるので設計がシンプル
• Multiple Page
• サイト構成によるが、固定コンテンツとそれ以外の個別の制御
一般的なPWAのCache削除
Activate時に削除
self.addEventListener('activate', function(e) {
e.waitUntil(
caches.keys().then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if ( key !== cacheName ) {
return caches.delete(key);
}
}));
})
);
return self.clients.claim();
});
更新タイミング
• ServiceWorkerはオンライン時に同期され、次回起動時に更新さ
れたものが動作する
• Cacheは明示的に更新するか、ServiceWorkerのActivate時に削除、
再取得される
Cache焦げ付き対策プラン
• IndexedDBの活用
• Cacheエントリー時にDBにタイムスタンプとURIを記録
• Cache読み出し時にオンラインなら期限切れのものは削除、更新する
一定期間のタイムラグはあるものの、「焦げ付き」はなくなる
• Workboxのexpiration.Plugin
フレームワークでできること
PWA Builder と Workbox
フレームワークでのCacheコントロール
• PWA Builder
https://www.pwabuilder.com/
• Work Box
https://developers.google.com/web/tools/workbox/
PWA Builder
• サイトURLと必要項目を入力すると、ServiceWorker、Manifest、
registerを生成してくれる
• Cache制御はURI個別の制御は無し(coming soon?)
• Offline page
• Offline copy of page
• Offline copy with Backup offline page
• Cache-first network
• Advanced Pre-cache(coming soon)
• ServiceWorkerのベース
https://github.com/pwa-builder/serviceworkers
• 既存のManifestがあるとそこから読み込んでくれる
PWA Builder
PWA Builder
Workbox
• Webサイトのオフラインサポートのためのライブラリ
• 細かなCache制御
importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.2.0/workbox-sw.js');
workbox.routing.registerRoute(
new RegExp('.*.js'),
workbox.strategies.networkFirst()
);
Workbox
• プラグインによる拡張
• workbox.backgroundSync.Plugin
• workbox.broadcastUpdate.Plugin
• workbox.cacheableResponse.Plugin
• workbox.expiration.Plugin
workbox.routing.registerRoute(
/.(?:png|gif|jpg|jpeg|svg)$/,
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 60,
maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
}),
],
}),
);
組み合わせるといい感じ!
• PWA Builderは簡単に素早くPWAの原型を作ってくれる
• 細かい制御をWorkboxで追加する
最後にちょっとチェック
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorkerの仲間たち
ServiceWorker・・・あれれ?
ま・・・待ちましょう
最後に
ABCでもPWA!
ABC 2018 Spring ご来場お待ちしております!
https://abc.android-group.jp/2018s/

Contenu connexe

Tendances

Jawsug osaka10 service&regions
Jawsug osaka10 service&regionsJawsug osaka10 service&regions
Jawsug osaka10 service&regions
Takuro Sasaki
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
VOYAGE GROUP
 

Tendances (20)

DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
 
Rubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピングRubyで始めるWebスクレイピング
Rubyで始めるWebスクレイピング
 
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるSaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
 
Blog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerBlog=pelican+bit bucket+docker
Blog=pelican+bit bucket+docker
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
Jawsug osaka10 service&regions
Jawsug osaka10 service&regionsJawsug osaka10 service&regions
Jawsug osaka10 service&regions
 
Azure概要とハイブリッドWebサイトとか / 2014.09.27
Azure概要とハイブリッドWebサイトとか / 2014.09.27Azure概要とハイブリッドWebサイトとか / 2014.09.27
Azure概要とハイブリッドWebサイトとか / 2014.09.27
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
JAWS-UG四国クラウドお遍路2014
JAWS-UG四国クラウドお遍路2014JAWS-UG四国クラウドお遍路2014
JAWS-UG四国クラウドお遍路2014
 
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するAWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
 
Jaws ug shimane-1
Jaws ug shimane-1Jaws ug shimane-1
Jaws ug shimane-1
 
gulp芸
gulp芸gulp芸
gulp芸
 
Learning jQuery
Learning jQueryLearning jQuery
Learning jQuery
 
OWASP_Kyushu_Local_Chapter_Meeting_7th
OWASP_Kyushu_Local_Chapter_Meeting_7th OWASP_Kyushu_Local_Chapter_Meeting_7th
OWASP_Kyushu_Local_Chapter_Meeting_7th
 
Capybaraで雑にWebスクレイピング
Capybaraで雑にWebスクレイピングCapybaraで雑にWebスクレイピング
Capybaraで雑にWebスクレイピング
 
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めようJSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
 
SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」SIROK技術勉強会 #1 「Reactってなんだ?」
SIROK技術勉強会 #1 「Reactってなんだ?」
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashita
 

Similaire à Cache 自由自在

Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
 
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
Eiji Iwazawa
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
Satoshi Takada
 

Similaire à Cache 自由自在 (20)

Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
 
wordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPresswordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPress
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
 
PWA aruaru
PWA aruaruPWA aruaru
PWA aruaru
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 
Serverless Anti-Patterns
Serverless Anti-PatternsServerless Anti-Patterns
Serverless Anti-Patterns
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013
 
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfkSpring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
 
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
 
PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松PWA has come!! / 2019/2/9 ABCD 浜松
PWA has come!! / 2019/2/9 ABCD 浜松
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 

Plus de Ryu Shindo

Plus de Ryu Shindo (11)

PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorker
 
PWA+TWA
PWA+TWAPWA+TWA
PWA+TWA
 
Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introduction
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所
 
20190320 pwanight PWA to APK
20190320 pwanight PWA to APK20190320 pwanight PWA to APK
20190320 pwanight PWA to APK
 
モバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむモバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむ
 
Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809
 
南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
 
Service Workerとは何者か
Service Workerとは何者かService Workerとは何者か
Service Workerとは何者か
 
PWAがたぶんくる
PWAがたぶんくるPWAがたぶんくる
PWAがたぶんくる
 

Dernier

Dernier (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Cache 自由自在