際際滷

際際滷Share a Scribd company logo
Create a Web
future with
ServiceWorker
ト`クテ`マ
¢ PWAのF彜
¢ Offline Web App
¢ DOMとのB亊
¢ バックグラウンド宥佚
Yoshiki
Kobayashi
ferret engineer
@ykyk1218
苧晩できることは、苧晩やる
マ`ケティング?テクノロジ`
1.PWA のF彜
もうすぐそこまで
PWAが栖るって冱っているエンジニアは
書すぐ看めろ
Y蕉 PWA は栖るの神瓦覆い裡
堀
云晩2018/04/02のiOS11.3のリリ`スに育い
ServiceWorkergみのSafariもリリ`スされ
ました
歌深
https://developer.apple.com/library/content/releasenotes/General/WhatsNewIn
Safari/Articles/Safari_11_1.html
ServiceWorkerできること
? レスポンス啜きQえ
? プッシュ宥岑
? オフラインキャッシュ
? バックグラウンド宥佚
2. Offline Web app
Cache storage
オフラインキャッシュの碧Mみ
Service
Worker
ServiceWorkerがロ`カルプロキシとして咾
オフラインキャッシュの碧Mみ
Service
Worker
キャッシュがあればす
オフライン鬉靴織汽ぅ
https://ykyk1218.github.io/
こちらもどうぞ
ServiceWokerでオフライン鬋汽ぅ箸鬚弔る
2. DOMとのB亊
click,mouseover,change...etc
Service
Worker
イベントk諮
postMessage
window.onload = function() {
target = document.querySelector(".next")
if(target) {
target.addEventListener('mousedown', function(event)
{
navigator.serviceWorker
.controller
.postMessage('/list.html')
})
}
}
クライアントjs
ServiceWorkerjs
self.addEventListener('message', function(event) {
fetch(new Request(event.data, {mode: 'no-cors'}))
.then(function(response) {
caches.open(CACHE_NAME).then(function(cache) {
cache.put(event.data, response)
})
})
})
イベントk諮でキャッシュ伏撹
https://ykyk1218.github.io/
3. Background
SyncEvent
バックグラウンド宥佚の箭
オフライン オンライン
Indexed db
など
デ`タ函誼
syncイベントk諮
クライアントjs
function sendMessageWithSync(data) {
addIndexedDb(data).then(function(result) {
return
navigator.serviceWorker.ready.then(function(reg) {
return reg.sync.register('send-talk')
})
})
}
//sendMessageWithSyncはsubmitrに柵ばれる
//dataに秘薦デ`タ
//addIndexedDbはindexeddbに鞠hするメソッドを喘吭
ServiceWorkerjs
self.addEventListener('sync', function(event) {
if(event.tag == 'send-talk') {
event.waitUntil(
getMessage().then(function(request) {
return fetch(url,{method:'POST', body: JSON.stringify(data),
credentials: 'include', mode: 'no-cors',
headers: {'content-type': 'application/json'}
})
})
.then(function() {
return deleteMessage(1)
})
)
}
})
//getMessage: indexeddbからデ`タを函誼する
ServiceWorkerjs
self.addEventListener('sync', function(event) {
if(event.tag == 'send-talk') {
event.waitUntil(
getMessage().then(function(request) {
return fetch(url,{method:'POST', body: JSON.stringify(data),
credentials: 'include', mode: 'no-cors',
headers: {'content-type': 'application/json'}
})
})
.then(function() {
return deleteMessage(1)
})
)
}
})
g佩が頼阻するまで棋つ
オフラインの秘薦坪否をオンライン
になったら僕佚する
https://ykyk1218.github.io/
デバッグつらいT T
まとめ
ServiceWorkerからキャッシュを函誼すること
でサイトを卯堀にできる
キャッシュやバックグラウンド宥佚によりオン
ライン、オフラインの彜Bを吭Rさせずに荷恬
ができる

More Related Content

皆艶姻厩庄界艶安看姻一艶姻でつくる安艶恢の隆栖