Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Natura Meet Up PWA - Offline first
Search
Marcus Ortense
September 12, 2019
Programming
0
72
Natura Meet Up PWA - Offline first
Marcus Ortense
September 12, 2019
Tweet
Share
More Decks by Marcus Ortense
See All by Marcus Ortense
Analytics para Devs
ortense
1
89
Concrete on Beer JavaScript - Offline first
ortense
0
120
Escrevendo javascript testável
ortense
1
160
Serverless
ortense
0
81
Talk - let, const & arrow functions
ortense
0
57
Talk - JavaScript Isomórfico
ortense
0
73
Desenvolvimento vs Conversão
ortense
2
110
Other Decks in Programming
See All in Programming
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
140
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
3.8k
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
20
11k
Navigating Dependency Injection with Metro
zacsweers
3
250
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
150
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
140
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
Deep Dive into Kotlin Flow
jmatsu
1
310
時間軸から考えるTerraformを使う理由と留意点
fufuhu
15
4.7k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Designing for humans not robots
tammielis
253
25k
For a Future-Friendly Web
brad_frost
180
9.9k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Building Adaptive Systems
keathley
43
2.7k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Balancing Empowerment & Direction
lara
3
620
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Statistics for Hackers
jakevdp
799
220k
Transcript
– OFFLINE FIRST meetup
Chapter Manager @ Concrete
Tech Lead @ Social Selling
– OFFLINE FIRST meetup Por que isso é importante?
– Qual a realidade da internet hoje?
– 40% dos usuários abandonam o site após 3 segundos
de espera. fonte: Dynatrace / Gomez.com (http://bit.ly/29jzPRc)
– Amazon identificou que cada 100 milissegundos de espera representa
a queda de 1% nas vendas fonte: Amazon / Findory (http://bit.ly/2kd4UOp)
– Em 2019 a cobertura de 3G no Brasil chegou
a 97.6%, atingindo 5438 municípios. fonte: Operadoras (http://bit.ly/2kaUSNC)
– 33% dos brasileiros acessa a internet apenas por dispositivos
móveis fonte: IBGE (http://bit.ly/2k8rFTs)
– 76% dos brasileiros utiliza banda larga móvel, sendo que
17% não possui acesso a outro tipo de conexão. fonte: IBGE (http://bit.ly/2k8rFTs)
– Brasil ocupa a 50ª posição no ranking de velocidade
de internet móvel. fonte: IBGE (http://bit.ly/2k8rFTs)
– A média de velocidade de internet móvel no Brasil
é 13mbs, abaixo da média global de 17mbs. fonte: IBGE (http://bit.ly/2k8rFTs)
– Mais de 70% dos acessos ao rede vem de
dispositivos móveis. fonte: Rede Natura
– E o que isso tem a ver com PWA?
None
None
None
– Progressive Web Apps é uma experiência do usuário ao
alcance da web confiável, rápida e engajante. fonte: Google Developers (http://bit.ly/2kI5J1J)
– Progressive Web Apps é uma experiência do usuário ao
alcance da web confiável, rápida e engajante. fonte: Google Developers (http://bit.ly/2kI5J1J)
– Carregue instantaneamente e nunca mostre o downasaur, mesmo em
condições de rede incertas. fonte: Google Developers (http://bit.ly/2kI5J1J)
– Mas como?!
– Tipo de conexão console.log(navigator.connection) NetworkInformation { downlink: 10, //
Estimativa da banda em MB/S effectiveType: '4g', // Tipo de conexão slow-2g, 2g, 3g', or 4g rtt: 0, // round-trip time em milissegundo saveData: false, // O usuário utiliza economia de dados onchange: null, // Event Handler }
– Online/Offline window.addEventListener('online', (e) => console.log('Online ')); window.addEventListener('offline', (e) =>
console.log('Offline ')); if(window.navigator.onLine) { console.log('Online ') } else { console.log('Offline ') }
– Service Workers INSTALL ACTIVATED ERROR IDLE TERMINATED FETCH /
MESSAGE fonte: Google Developers | Web Fundamentals (http://bit.ly/2kxftft)
if('serviceWorker' in navigator) { console.log('ServiceWorker é suportado neste navegador ')
} else { console.log('ServiceWorker não é suportado ') }
navigator.serviceWorker.register('assets/sw.js') .then(reg => console.info('registered ', reg)) .catch(err => console.error('error registering
', err))
navigator.serviceWorker.register('assets/sw.js') .then((reg) => { if(reg.installing) { console.log('Instalando ') } else
if(reg.waiting) { console.log('Instalado ✅') } else if(reg.active) { console.log('SeviceWorker ativo ') } })
navigator.serviceWorker.register('assets/sw.js') .then((reg) => { const sw = reg.installing reg.addEventListener('updatefound', ()
=> { sw.addEventListener('statechange', () => { console.log(`Status atualizado para ${sw.state} `) }) }) })
const PRE_CACHE_URL = [ '/index.html', '/styles/main.css', '/script/main.js' ]; self.addEventListener('install', (event)
=> { event.waitUntil(caches.open('cache-app-v1') .then((cache) => cache.addAll(PRE_CACHE_URL))) })
self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((response) => { if(response) return
response return fetch(event.request) }) ) })
event.respondWith( caches.match(event.request).then((response) => { if(response) return response return fetch(event.request) .then(response
=> { caches.open('cache-app-v1').then(cache => cache.put(event.request, response.clone())) return response }) }) .catch(() => caches.match('fallback.html')))
– CONCLUSÃO
– Offline first é possível, faz sentido, pode ser feito
hoje e cria uma a experiência mais confiável para o seu usuário.
OBRIGADO! @marcusortense
[email protected]
bit.ly/2kypFEv