SlideShare a Scribd company logo
twitter/@denar90_ github/@denar90
Artem Denysov
Easy ways to speed up your web application
1
twitter/@denar90_ github/@denar90
2
twitter/@denar90_ github/@denar90
3
twitter/@denar90_ github/@denar90
4
twitter/@denar90_ github/@denar90
@brunch @marionettejs
5
twitter/@denar90_ github/@denar90
6
@paulirish @samccone
twitter/@denar90_ github/@denar90
7
pwmetrics DevTools Timeline Viewer
twitter/@denar90_ github/@denar90
8
Agenda
1. Why mobile/offline apps?
2. Techniques.
3. Real example.
4. Tools.
5. Profit.
twitter/@denar90_ github/@denar90
Progressive Web Applications
9
twitter/@denar90_ github/@denar90
10
twitter/@denar90_ github/@denar90
11
twitter/@denar90_ github/@denar90
12
twitter/@denar90_ github/@denar90
13
twitter/@denar90_ github/@denar90
14
Network latency
goo.gl/JYgVdB
twitter/@denar90_ github/@denar90
15
JavaScript Parse&Compile
Time spent in Parse/Compile can often be 2–5x longer on phones than on
desktops.
youtu.be/RWLzUnESylc
twitter/@denar90_ github/@denar90
16
goo.gl/08Dibh
twitter/@denar90_ github/@denar90
goo.gl/3lfWDH
17
twitter/@denar90_ github/@denar90
18
twitter/@denar90_ github/@denar90
19
twitter/@denar90_ github/@denar90
20
twitter/@denar90_ github/@denar90
21
twitter/@denar90_ github/@denar90
22
@npm/mobile-friendlysearch.google.com/search-console/mobile-friendly
twitter/@denar90_ github/@denar90
How to improve it?
23
twitter/@denar90_ github/@denar90
Measure!
24
twitter/@denar90_ github/@denar90
Perf audit by @paulirish
goo.gl/druO7c
25
twitter/@denar90_ github/@denar90
Perf audit by @samccone
goo.gl/6Ox9xG
26
twitter/@denar90_ github/@denar90
27
twitter/@denar90_ github/@denar90
28
twitter/@denar90_ github/@denar90
29
twitter/@denar90_ github/@denar90
What’s the purpose?
30
twitter/@denar90_ github/@denar90
Define bottlenecks and then fix them!
31
twitter/@denar90_ github/@denar90
Let’s ask someone to do it!
32
twitter/@denar90_ github/@denar90
33
twitter/@denar90_ github/@denar90
34
twitter/@denar90_ github/@denar90
Let’s Google it!
35
twitter/@denar90_ github/@denar90
36
twitter/@denar90_ github/@denar90
Key stuff
- minimize your bundle
37
twitter/@denar90_ github/@denar90
Key stuff
- minimize your bundle
- add `defer` attribute to your scripts
38
twitter/@denar90_ github/@denar90
Key stuff
- minimize your bundle
- add defer attribute to your scripts
<script src="my_script.js" defer></script>
39
twitter/@denar90_ github/@denar90
40
<script>
<script async>
<script defer>
goo.gl/Ey3IWo
twitter/@denar90_ github/@denar90
Key stuff
- minimize your bundle
- add `defer` attribute to your scripts
- move noncritical styles to body
41
twitter/@denar90_ github/@denar90
42
twitter/@denar90_ github/@denar90
@addyosmani/critical
43
twitter/@denar90_ github/@denar90
44
Earlier
twitter/@denar90_ github/@denar90
45
Earlier
Now
twitter/@denar90_ github/@denar90
46
goo.gl/1rxh8V
twitter/@denar90_ github/@denar90
Key stuff
- minimize your bundle
- add `defer` attribute to your scripts
- move noncritical styles to body
- prefetch/preload
47
twitter/@denar90_ github/@denar90
48
<link rel=”preload”>
Good for fetching later discovered resources
(key scripts, Web Fonts, hero images)
twitter/@denar90_ github/@denar90
49
<link rel=”preload”>
Good for fetching later discovered resources
<link rel=”prefetch”>
Good for future navigation
(key scripts, Web Fonts, hero images)
twitter/@denar90_ github/@denar90
50
goo.gl/PfkprA
twitter/@denar90_ github/@denar90
51
Let’s apply some of these
techniques to
real application
twitter/@denar90_ github/@denar90
52
babeljs.io/
twitter/@denar90_ github/@denar90
53
Timeline trace
twitter/@denar90_ github/@denar90
54
Timeline trace
twitter/@denar90_ github/@denar90
55
Let’s add `defer` !
twitter/@denar90_ github/@denar90
56
Timeline trace
twitter/@denar90_ github/@denar90
57
Timeline trace
twitter/@denar90_ github/@denar90
58
twitter/@denar90_ github/@denar90
59
Let’s not show ‘editor’ for mobile !
twitter/@denar90_ github/@denar90
60
Timeline trace
twitter/@denar90_ github/@denar90
61
2x speedup!
twitter/@denar90_ github/@denar90
62
@babel.github.io/pull/1234
twitter/@denar90_ github/@denar90
63
@brunch.github.io/pull/199
twitter/@denar90_ github/@denar90
64
@code-nasa-gov/issues/49
twitter/@denar90_ github/@denar90
Are there more stuff than DevTools?
65
twitter/@denar90_ github/@denar90
@GoogleChrome/lighthouse/
~9 K stars
66
twitter/@denar90_ github/@denar90
@GoogleChrome/lighthouse/
Runtime Environment
Device Emulation (Nexus 5X):
Enabled
Network Throttling (150ms RTT,
1.6Mbps down, 0.7Mbps up):
Enabled
CPU Throttling (5x slowdown):
Enabled
67
twitter/@denar90_ github/@denar90
68
Chrome Launcher
npm install chrome-launcher
@GoogleChrome/lighthouse/tree/master/chrome-launcher
twitter/@denar90_ github/@denar90
@GoogleChrome/lighthouse/
69
twitter/@denar90_ github/@denar90
@GoogleChrome/lighthouse/
70
twitter/@denar90_ github/@denar90
71
youtu.be/NoRYn6gOtVo
twitter/@denar90_ github/@denar90
72
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
73
~600 stars
twitter/@denar90_ github/@denar90
74
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
Runtime Environment
Device Emulation (Nexus 5X): Enabled
Network Throttling (150ms RTT, 1.6Mbps down,
0.7Mbps up): Enabled
CPU Throttling (5x slowdown): Enabled
75
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
76
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
77
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
78
twitter/@denar90_ github/@denar90
pwmetrics - @paulirish/pwmetrics
79
twitter/@denar90_ github/@denar90
80
goo.gl/Z9rKrb
twitter/@denar90_ github/@denar90
81
@ChromeDevTools/timeline-viewer
twitter/@denar90_ github/@denar90
82
twitter/@denar90_ github/@denar90
83
Shareable timeline traces
twitter/@denar90_ github/@denar90
84
twitter/@denar90_ github/@denar90
85
Offline work
twitter/@denar90_ github/@denar90
86
twitter/@denar90_ github/@denar90
87
Split View
twitter/@denar90_ github/@denar90
88
twitter/@denar90_ github/@denar90
89
Google Drive Uploading
twitter/@denar90_ github/@denar90
90
twitter/@denar90_ github/@denar90
91
What was learned?
- build mobile first apps
- use real device for testing/measuring
- use different metrics to define performance bottlenecks
- apply latest techniques for improving your application
performance
twitter/@denar90_ github/@denar90
92
As a result
twitter/@denar90_ github/@denar90
93
Get better as a developer
twitter/@denar90_ github/@denar90
94
Get better as a developer
Make more money for your project
Thanks!
95
@github/denar90
@twitter/denar90_

More Related Content

PPTX
JavaScript and Internet Controlled Hardware Prototyping
PPTX
JavaScript and Internet Controlled Hardware Prototyping (Now with more Node G...
PPTX
Grpc and asp.net partie 2
PDF
Candies for everybody: Hacking from 9 to 6
PPTX
Continuous Integration With Windows Azure Pack
PPT
#Work3c Social Media Workshop
PDF
Software Development Worcester
PDF
@Ajug #hangout #q&a app
JavaScript and Internet Controlled Hardware Prototyping
JavaScript and Internet Controlled Hardware Prototyping (Now with more Node G...
Grpc and asp.net partie 2
Candies for everybody: Hacking from 9 to 6
Continuous Integration With Windows Azure Pack
#Work3c Social Media Workshop
Software Development Worcester
@Ajug #hangout #q&a app

What's hot (17)

PDF
Adding Source Control to Your Life
PDF
nd-grad-cert
DOCX
Week 4 enrico c sebastian
PDF
Conjuregram Review Ben Murray & Daniel Adetunji
PDF
Android's Warp Pipe
PDF
From your pocket to your wrist with Android Wear
PPTX
How to use ifttt slides
PDF
Digitized Android Workshop
PPTX
How to use ifttt slides
PDF
Getting Hooked on Twitch’s Webhooks - TwitchCon Developer Day 2017
PPTX
Magento done right - PHP UK 2016
PDF
Microservices - Voxxed Vilnius 2015
PPT
PPTX
Version control, you git
PPTX
Raconteur: bringing ATDD to Visual Studio
PDF
Fighting Fragmentation with Fragments
ODP
20100214 TweeSpeed @ CafeNumerique
Adding Source Control to Your Life
nd-grad-cert
Week 4 enrico c sebastian
Conjuregram Review Ben Murray & Daniel Adetunji
Android's Warp Pipe
From your pocket to your wrist with Android Wear
How to use ifttt slides
Digitized Android Workshop
How to use ifttt slides
Getting Hooked on Twitch’s Webhooks - TwitchCon Developer Day 2017
Magento done right - PHP UK 2016
Microservices - Voxxed Vilnius 2015
Version control, you git
Raconteur: bringing ATDD to Visual Studio
Fighting Fragmentation with Fragments
20100214 TweeSpeed @ CafeNumerique
Ad

Similar to Artem Denysov "Easy ways to speed up your web application" (20)

PDF
The Hitchhiker's Guide to Building a Progressive Web App
PDF
Progressive web apps
PDF
The Web Platform - State of the Union '17
PPTX
Future of web development
PPTX
Shining a light on performance (js meetup)
PDF
Progressing JavaScript and Apps the Web way…
PDF
Progressive Web Apps - Porque nativo no es significa mejor
PDF
Martin Splitt "Progressive web apps with Polymer"
PDF
New trends on web platform
PDF
Single Page Web Apps
PDF
Meet.js Summit 2019 - PWA in practice
PPT
Firefox os the web, mobile (for yahoo! hack europe - april 2013)
PPTX
Raising ux bar with offline first design
PDF
Hybrid Apps (Native + Web) via QtWebKit
PDF
Building JavaScript Apps on Top of Popular CMSes
PPTX
Centric - PWA WebCast
PDF
Dan Appelquist at BBC News Labs : "firefoxOS - the web, mobile, web apps"
PPTX
Progressive Web Apps - Intro & Learnings
PDF
Артем Денисов "Improve your web application using Progressive Web Metrics"
PDF
Info session 2024.pdf
The Hitchhiker's Guide to Building a Progressive Web App
Progressive web apps
The Web Platform - State of the Union '17
Future of web development
Shining a light on performance (js meetup)
Progressing JavaScript and Apps the Web way…
Progressive Web Apps - Porque nativo no es significa mejor
Martin Splitt "Progressive web apps with Polymer"
New trends on web platform
Single Page Web Apps
Meet.js Summit 2019 - PWA in practice
Firefox os the web, mobile (for yahoo! hack europe - april 2013)
Raising ux bar with offline first design
Hybrid Apps (Native + Web) via QtWebKit
Building JavaScript Apps on Top of Popular CMSes
Centric - PWA WebCast
Dan Appelquist at BBC News Labs : "firefoxOS - the web, mobile, web apps"
Progressive Web Apps - Intro & Learnings
Артем Денисов "Improve your web application using Progressive Web Metrics"
Info session 2024.pdf
Ad

More from OdessaJS Conf (20)

PPTX
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
PDF
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
PDF
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
PPTX
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
PPTX
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
PPTX
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
PDF
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
PDF
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
PPTX
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
PPTX
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
PPTX
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
PPTX
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
PPTX
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
PPTX
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
PDF
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
PDF
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
PDF
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
PDF
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
PDF
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
PDF
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020

Recently uploaded (20)

PPTX
Digital Literacy And Online Safety on internet
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
Introduction to Information and Communication Technology
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
DOCX
Unit-3 cyber security network security of internet system
PPTX
presentation_pfe-universite-molay-seltan.pptx
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PDF
FINAL CALL-6th International Conference on Networks & IOT (NeTIOT 2025)
PPT
Ethics in Information System - Management Information System
PPTX
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
PPTX
Funds Management Learning Material for Beg
PPTX
Power Point - Lesson 3_2.pptx grad school presentation
PPT
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
PPTX
international classification of diseases ICD-10 review PPT.pptx
Digital Literacy And Online Safety on internet
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
Unit-1 introduction to cyber security discuss about how to secure a system
Slides PDF The World Game (s) Eco Economic Epochs.pdf
Introuction about ICD -10 and ICD-11 PPT.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
Introduction to Information and Communication Technology
introduction about ICD -10 & ICD-11 ppt.pptx
PptxGenJS_Demo_Chart_20250317130215833.pptx
Unit-3 cyber security network security of internet system
presentation_pfe-universite-molay-seltan.pptx
SASE Traffic Flow - ZTNA Connector-1.pdf
FINAL CALL-6th International Conference on Networks & IOT (NeTIOT 2025)
Ethics in Information System - Management Information System
June-4-Sermon-Powerpoint.pptx USE THIS FOR YOUR MOTIVATION
Funds Management Learning Material for Beg
Power Point - Lesson 3_2.pptx grad school presentation
FIRE PREVENTION AND CONTROL PLAN- LUS.FM.MQ.OM.UTM.PLN.00014.ppt
international classification of diseases ICD-10 review PPT.pptx

Artem Denysov "Easy ways to speed up your web application"

Editor's Notes

  • #25: Ask people if they are using throttling and real device?
  • #49: preload - not blocking onload event preload - can fetch CORS resources
  • #50: preload - not blocking onload event preload - can fetch CORS resources