SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
From nothing to a video
under 2 seconds
Mikhail Sychev, Software Engineer Unicorn at Google
Who am I?
● Software Engineer at YouTube
● Evangelist of modern web technologies
● Member of the “Make YouTube Faster” group
What we will talk about
● Types of page load, associated challenges and our
approach to handling them
● Tools that we use to build and monitor YouTube
● Tricks we learned along the way
1 Second
...users notice the short delay, they stay focused on
their current train of thought during the one-second
interval … this means that new pages must display
within 1 second for users to feel like they're
navigating freely; any slower and they feel held back
by the computer and don't click as readily.
JAKOB NIELSEN http://www.nngroup.com/articles/response-times-3-important-limits/
YouTube is a video streaming service, starting
video playback as early as possible is the most
important task of the Watch page
....yet everything else is important too
Video PlayerGuide
Metadata
Actions
Playlist and related videos
Comments
Metadata
Masthead
Cold load
Warm load
Hot load
Navigation types
Users opening YouTube page with a plain HTTP
(s) request
● Full HTML page downloaded and parsed
● Some or no static resources in cache
● Some DNS cache
● Thumbnails have to be downloaded
● Various “pre-browse” techniques
○ http://www.slideshare.
net/souders/prebrowsing-velocity-ny-2013
○ http://www.slideshare.
net/MilanAryal/preconnect-prefetch-prerender
● Browsers are really good at rendering HTML soup
○ Because this is what the most of internet is
But that’s pretty much it...
Good news we have plenty of room for
optimizations (bad news is up to us to do all of it)
● How fast can we send data to the browser?
● How much data should be downloaded?
● How much data should be processed?
● Do we have CPU/thread or network congestion?
● HTTP2/SPDY(for http) + QUIC(for video)
● gzip
● Image crushing
● JS compiled by Google closure and modularized
● Icon sprites (WebP where supported)
● Minified CSS
● CDN
https://developers.google.com/speed/pagespeed/
Basic things you would expect
● Why should you care?
○ Typed JavaScript
■ Absolutely critical for large teams
○ A set of advanced optimizations
○ HUGE size savings and dead code removal
○ Kind of hard to setup and writing annotations is
time consuming
Closure compiler
● Try the compiler online:
https://closure-compiler.appspot.com/
● Docs and examples:
https://developers.google.
com/closure/compiler/docs/api-tutorial2
Chunking
GET /
INIT RPC DATA TRANSFER
PAGE RENDERING...
TEMPLATE
STATIC
Typical request lifetime
● Browser performs a request
● Backend parses this requests and necessary data is
fetched / RPCs called
● Page is rendered via some templating language and
sent to browser
● Browser starts to render while fetching the page and
downloads external resources
● Browser has nothing to do while we are blocked by
RPCs on the backend
● But when we start sending the data it’s forced to
render the page while downloading and executing all
external resources
● Result - CPU/thread and bandwidth congestion
Chunking approach
● Render and send to the browser first chunk
containing references to external resources
● Browser starts to fetch them while the connection is
still open
● Send extra chunks of data as RPCs are completed
● Serialize data as JSON to be used later if UI is
blocking
GET /
INIT T0 DATA TRANSFER
RNDR...
RPC1
STATIC
T1 RPC2 T2
RNDR RNDR
Chunking approach
Works for client side applications too
● Send links to application resources early
● Render the application chrome, do not wait for page
onload event
● Append data as JSON to the end of the page
● Be careful of timing issues
○ You can’t predict if the application is initialized
first or if the page is completely downloaded
GET /
INIT T0 DATA TRANSFER
RNDR...
RPC
STATIC
JSON
RNDR
350kb of compiled and
compressed JS
Here comes the player
Player
● Player is large
○ It’s not just a video tag
○ Ads, format selection logic, UI, annotations, etc…
○ Sometimes we have to fallback to Flash
● Just executing all the necessary JS is a significant
CPU task
● We really don’t want to do this on every page load
(but nothing we can do for cold loads)
● Player can be blocked by OS (video and audio init)
Player
● No silver bullet for cold load
● Have to carefully profile and optimize the code
● Send the player early and init early
● But the page may still be downloading/painting
● So try not to get in the way e.g. asking the page for
the container size of the player may trigger relayout
blocking the browser for 10x ms
Player
● tldr: Efficient video playback is HARD, we have a
whole team dedicating to making it fast
● Pick your battles and don’t try to support every
browser/platform unless you absolutely have to
● Focus on HTML5 if possible, Flash is slowly going
away
Thumbnails
Thumbnails
● 10+ thumbnails above the fold on the Watch page
● Some of the pages are mostly thumbnails
● Important for users to decide what to watch, we
want thumbnails as fast as possible unless they are
in the path of video
Thumbnails
● Only images above the fold are important on
initial page display, everything else can be loaded
later
● But some extra ones can still be preloaded to
prevent thumbnail popping
Delay/Lazy loading
● Can’t start loading of the images until JS can be
executed and forces re-layout
● Not the best solution if most of the images are
above the fold
● We use hybrid approach, do not preloader
thumbnails that are always above the fold and
affect user behavior
Delay/Lazy loading
Visible to the user on page load
Invisible, but preloaded
Invisible to the user, not loaded
“WebP is a new image format that provides
lossless and lossy compression for images on
the web. WebP lossless images are 26% smaller
in size compared to PNGs. WebP lossy images
are 25-34% smaller in size...”
● Chrome (+mobile)
● Opera (+mobile)
● FF and IE through WebPJS
● Android 4.0+
● iOS (through 3rd party libraries)
● WebKit based console applications
http://caniuse.com/webp
Use WebP for sprites and for thumbnails if you can
afford extra space and wants to serve to native
clients.
mileage may vary but expect 10% faster page load
Delay loading
● Browsers already has priorities
● Sometimes we want more control
● Fetching of video bytes should be more important
than thumbnails
● But this requires large codebase refactoring
○ Triggers potential race conditions and issues of
various kinds
● setInterval and setTimeout hijacking as a simple
introduction of scheduling
Cold load
Warm load
Hot load
● A navigation from one YouTube page to another in
the same tab/window
● We have full control, can use rel=”pre-whatever”
● Can we do better?
○ Only transfer JSON data?
■ Requires to rewrite all backend templates
■ Browser are actually really good at rendering
html soup
http://youtube.github.io/spfjs/
https://www.youtube.com/watch?v=yNe_HdayTtY
aka “that red bar on top of
the page”
● State and history
management
● In memory caching
● Chunked JSON
responses
● Partial DOM updates
● Lightweight alternative to rewriting all of the backend
templates
● Chunks of the page are send from backend as
chunked JSON
○ Some overhead on escaping (don’t mess up your
JSON)
○ Overall JSON responses are smaller
● Player preinit on non Watch and persistent player
across page boundaries
● Less DOM changes on navigation
● Custom caching
Critical Stages of Playback
With player preinit
13% QPS decrease
40% faster playback
Cold load
Warm load
Hot load
● Can we do better? Cache?
○ Visited pages/history - necessary to get the
back/forward right
○ Tricky, first page load problem
■ If first page is rendered on backend, how do
we go back?
○ How does this affect the metrics?
○ Can we do even better? Cache pages that would
visited with high probability(next video in autoplay
for example?)
○ But what if the user does not go to next page?
■ Even more metric craziness
■ More QPS
● Every latency impacting change goes through A/B
testing
● Monitor both latency impact and user behaviors
● Making things fast is good, but sometimes we
have to revisit experiments due to behavior
changes (especially for delay loading)
Monitoring
● Regressions happen all the time
○ Some are expected, like YouTube logo doodles
○ Some are real issues
● A lot of things can change
○ Sizes of common static resources
○ Number of images on the page
○ Latency of server responses
● We log timestamps of important events, server
time, aft, qoe, etc..
● Browsers react differently, so we collect data per
browser
○ Version, background state, etc...
● http://www.webpagetest.org
● In addition we use many in-house tools to for
monitoring and notification
Summary
● Aim for average page load latency of 1 second or
better
● Different types of page loads may require different
approach
● Use WebP for sprites(usually) and thumbnails(if
possible)
● Google closure compiler is awesome, but hard to set
up - use it if you can
● Minimize amount of work done on every load
(persistent player)
● Understand how the browser works
● SPF is a reasonable alternative to replacing
everything with client side templating, saves QPS
and makes everything faster
● Chunking unblocks the browser, but requires
backend to support it
● Monitor everything, A/B testing is important,
profiling is critical
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in ScalaAmir Karimi
 
Mean Stack - An Overview
Mean Stack - An OverviewMean Stack - An Overview
Mean Stack - An OverviewNaveen Pete
 
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsThe MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsMongoDB
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectChau Thanh
 
Automated Web App Performance Testing Using WebDriver
Automated Web App Performance Testing Using WebDriverAutomated Web App Performance Testing Using WebDriver
Automated Web App Performance Testing Using WebDriverseleniumconf
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsDenis Izmaylov
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN StackValeri Karpov
 
More efficient, usable web
More efficient, usable webMore efficient, usable web
More efficient, usable webChris Mills
 
Webpack and Web Performance Optimization
Webpack and Web Performance OptimizationWebpack and Web Performance Optimization
Webpack and Web Performance OptimizationChen-Tien Tsai
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 
How to make your Webpack builds 10x faster
How to make your Webpack builds 10x fasterHow to make your Webpack builds 10x faster
How to make your Webpack builds 10x fastertrueter
 
Production optimization with React and Webpack
Production optimization with React and WebpackProduction optimization with React and Webpack
Production optimization with React and Webpackk88hudson
 
When Will Drupal Die? (Keynote talk)
When Will Drupal Die? (Keynote talk)When Will Drupal Die? (Keynote talk)
When Will Drupal Die? (Keynote talk)chrisshattuck
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) Sascha Sambale
 
MongoDB and the MEAN Stack
MongoDB and the MEAN StackMongoDB and the MEAN Stack
MongoDB and the MEAN StackMongoDB
 

Was ist angesagt? (18)

Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in Scala
 
Mean Stack - An Overview
Mean Stack - An OverviewMean Stack - An Overview
Mean Stack - An Overview
 
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsThe MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
 
Zing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat ArchitectZing Me Real Time Web Chat Architect
Zing Me Real Time Web Chat Architect
 
Automated Web App Performance Testing Using WebDriver
Automated Web App Performance Testing Using WebDriverAutomated Web App Performance Testing Using WebDriver
Automated Web App Performance Testing Using WebDriver
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
NodeSummit - MEAN Stack
NodeSummit - MEAN StackNodeSummit - MEAN Stack
NodeSummit - MEAN Stack
 
More efficient, usable web
More efficient, usable webMore efficient, usable web
More efficient, usable web
 
Webpack and Web Performance Optimization
Webpack and Web Performance OptimizationWebpack and Web Performance Optimization
Webpack and Web Performance Optimization
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
How to make your Webpack builds 10x faster
How to make your Webpack builds 10x fasterHow to make your Webpack builds 10x faster
How to make your Webpack builds 10x faster
 
Production optimization with React and Webpack
Production optimization with React and WebpackProduction optimization with React and Webpack
Production optimization with React and Webpack
 
When Will Drupal Die? (Keynote talk)
When Will Drupal Die? (Keynote talk)When Will Drupal Die? (Keynote talk)
When Will Drupal Die? (Keynote talk)
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
MongoDB and the MEAN Stack
MongoDB and the MEAN StackMongoDB and the MEAN Stack
MongoDB and the MEAN Stack
 

Andere mochten auch

Situação de aprendizagem aparecida moreira
Situação de aprendizagem aparecida moreiraSituação de aprendizagem aparecida moreira
Situação de aprendizagem aparecida moreiraCiridinhaRP
 
Satélite informatica 2a
Satélite informatica 2aSatélite informatica 2a
Satélite informatica 2ajorge1845
 
las normas, el deber y el bien
las normas, el deber y el bienlas normas, el deber y el bien
las normas, el deber y el bienrivero14
 
Como estar à mesa
Como estar à mesaComo estar à mesa
Como estar à mesamanuelcacao
 
Apresentação1
Apresentação1Apresentação1
Apresentação1zamba79
 
Top Planejamento - Planejamento Mão na Massa
Top Planejamento - Planejamento Mão na MassaTop Planejamento - Planejamento Mão na Massa
Top Planejamento - Planejamento Mão na MassaWerner Iucksch
 
Qwest DCO and Qwest CSR
Qwest DCO and Qwest CSRQwest DCO and Qwest CSR
Qwest DCO and Qwest CSRKetan Gandhi
 
Diferenca ead eol
Diferenca ead eolDiferenca ead eol
Diferenca ead eolEmilio Diaz
 
Apresentação s.a vmxiii
Apresentação s.a vmxiiiApresentação s.a vmxiii
Apresentação s.a vmxiiiSantos SA
 
Europe2020stocktaking annex pt estratégias des 2020
Europe2020stocktaking annex pt estratégias des 2020Europe2020stocktaking annex pt estratégias des 2020
Europe2020stocktaking annex pt estratégias des 2020Fernando Zornitta
 
Alerta de vírus
Alerta de vírusAlerta de vírus
Alerta de vírusantivirux7
 
Manual MM4 Line6
Manual MM4 Line6 Manual MM4 Line6
Manual MM4 Line6 Habro Group
 
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)Habro Group
 

Andere mochten auch (20)

O+foca+ed 6+
O+foca+ed 6+O+foca+ed 6+
O+foca+ed 6+
 
Proinfo 24 06-2013
Proinfo 24 06-2013Proinfo 24 06-2013
Proinfo 24 06-2013
 
Nanotecnologia
NanotecnologiaNanotecnologia
Nanotecnologia
 
Situação de aprendizagem aparecida moreira
Situação de aprendizagem aparecida moreiraSituação de aprendizagem aparecida moreira
Situação de aprendizagem aparecida moreira
 
Satélite informatica 2a
Satélite informatica 2aSatélite informatica 2a
Satélite informatica 2a
 
las normas, el deber y el bien
las normas, el deber y el bienlas normas, el deber y el bien
las normas, el deber y el bien
 
http://www.blogger.com/home
http://www.blogger.com/homehttp://www.blogger.com/home
http://www.blogger.com/home
 
Como estar à mesa
Como estar à mesaComo estar à mesa
Como estar à mesa
 
Teoria das perspectivas
Teoria das perspectivasTeoria das perspectivas
Teoria das perspectivas
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Introdução
IntroduçãoIntrodução
Introdução
 
Top Planejamento - Planejamento Mão na Massa
Top Planejamento - Planejamento Mão na MassaTop Planejamento - Planejamento Mão na Massa
Top Planejamento - Planejamento Mão na Massa
 
Qwest DCO and Qwest CSR
Qwest DCO and Qwest CSRQwest DCO and Qwest CSR
Qwest DCO and Qwest CSR
 
Diferenca ead eol
Diferenca ead eolDiferenca ead eol
Diferenca ead eol
 
Apresentação s.a vmxiii
Apresentação s.a vmxiiiApresentação s.a vmxiii
Apresentação s.a vmxiii
 
Europe2020stocktaking annex pt estratégias des 2020
Europe2020stocktaking annex pt estratégias des 2020Europe2020stocktaking annex pt estratégias des 2020
Europe2020stocktaking annex pt estratégias des 2020
 
Alerta de vírus
Alerta de vírusAlerta de vírus
Alerta de vírus
 
Manual MM4 Line6
Manual MM4 Line6 Manual MM4 Line6
Manual MM4 Line6
 
Quench APY
Quench APYQuench APY
Quench APY
 
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)
Manual do pedal de efeito DM4 Line 6 (PORTUGUÊS)
 

Ähnlich wie From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)

Performance & dev tools
Performance & dev toolsPerformance & dev tools
Performance & dev toolsGuy Yogev
 
Digibury: SciVisum - Making your website fast - and scalable
Digibury: SciVisum - Making your website fast - and scalableDigibury: SciVisum - Making your website fast - and scalable
Digibury: SciVisum - Making your website fast - and scalableLizzie Hodgson
 
Harnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platforHarnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platforLuke Summerfield
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautifulMeaghan Lewis
 
OutSystems Webinar - Troubleshooting Mobile Apps Performance
OutSystems Webinar - Troubleshooting Mobile Apps PerformanceOutSystems Webinar - Troubleshooting Mobile Apps Performance
OutSystems Webinar - Troubleshooting Mobile Apps PerformanceDaniel Reis
 
Training Webinar: Troubleshooting Mobile Apps Performance
Training Webinar: Troubleshooting Mobile Apps Performance Training Webinar: Troubleshooting Mobile Apps Performance
Training Webinar: Troubleshooting Mobile Apps Performance OutSystems
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerSuresh Patidar
 
Parallel programing in web applications - public.pptx
Parallel programing in web applications - public.pptxParallel programing in web applications - public.pptx
Parallel programing in web applications - public.pptxGuy Bary
 
WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014Patrick Meenan
 
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...Learnosity
 
Introducing chrome apps (ogura)
Introducing chrome apps (ogura)Introducing chrome apps (ogura)
Introducing chrome apps (ogura)Kazuhiro Ogura
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Per Henrik Lausten
 
Web performance optimization - MercadoLibre
Web performance optimization - MercadoLibreWeb performance optimization - MercadoLibre
Web performance optimization - MercadoLibrePablo Moretti
 
Mage uk-2013-1345-chris-wells-131030120920-phpapp01
Mage uk-2013-1345-chris-wells-131030120920-phpapp01Mage uk-2013-1345-chris-wells-131030120920-phpapp01
Mage uk-2013-1345-chris-wells-131030120920-phpapp01Karla Mae Tejon
 
The Importance of Site Performance and Simple Steps to Achieve It
The Importance of Site Performance and Simple Steps to Achieve ItThe Importance of Site Performance and Simple Steps to Achieve It
The Importance of Site Performance and Simple Steps to Achieve ItNexcess.net LLC
 
Web performance mercadolibre - ECI 2013
Web performance   mercadolibre - ECI 2013Web performance   mercadolibre - ECI 2013
Web performance mercadolibre - ECI 2013Santiago Aimetta
 
How to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websitesHow to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websitesPratik Jagdishwala
 
Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)rc2209
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)Igalia
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvementsGengo
 

Ähnlich wie From nothing to a video under 2 seconds / Mikhail Sychev (YouTube) (20)

Performance & dev tools
Performance & dev toolsPerformance & dev tools
Performance & dev tools
 
Digibury: SciVisum - Making your website fast - and scalable
Digibury: SciVisum - Making your website fast - and scalableDigibury: SciVisum - Making your website fast - and scalable
Digibury: SciVisum - Making your website fast - and scalable
 
Harnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platforHarnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platfor
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautiful
 
OutSystems Webinar - Troubleshooting Mobile Apps Performance
OutSystems Webinar - Troubleshooting Mobile Apps PerformanceOutSystems Webinar - Troubleshooting Mobile Apps Performance
OutSystems Webinar - Troubleshooting Mobile Apps Performance
 
Training Webinar: Troubleshooting Mobile Apps Performance
Training Webinar: Troubleshooting Mobile Apps Performance Training Webinar: Troubleshooting Mobile Apps Performance
Training Webinar: Troubleshooting Mobile Apps Performance
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web worker
 
Parallel programing in web applications - public.pptx
Parallel programing in web applications - public.pptxParallel programing in web applications - public.pptx
Parallel programing in web applications - public.pptx
 
WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014
 
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
 
Introducing chrome apps (ogura)
Introducing chrome apps (ogura)Introducing chrome apps (ogura)
Introducing chrome apps (ogura)
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
 
Web performance optimization - MercadoLibre
Web performance optimization - MercadoLibreWeb performance optimization - MercadoLibre
Web performance optimization - MercadoLibre
 
Mage uk-2013-1345-chris-wells-131030120920-phpapp01
Mage uk-2013-1345-chris-wells-131030120920-phpapp01Mage uk-2013-1345-chris-wells-131030120920-phpapp01
Mage uk-2013-1345-chris-wells-131030120920-phpapp01
 
The Importance of Site Performance and Simple Steps to Achieve It
The Importance of Site Performance and Simple Steps to Achieve ItThe Importance of Site Performance and Simple Steps to Achieve It
The Importance of Site Performance and Simple Steps to Achieve It
 
Web performance mercadolibre - ECI 2013
Web performance   mercadolibre - ECI 2013Web performance   mercadolibre - ECI 2013
Web performance mercadolibre - ECI 2013
 
How to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websitesHow to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websites
 
Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvements
 

Mehr von Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mehr von Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Kürzlich hochgeladen

S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxSCMS School of Architecture
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxSCMS School of Architecture
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiessarkmank1
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdfKamal Acharya
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxmaisarahman1
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdfKamal Acharya
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Servicemeghakumariji156
 
Online electricity billing project report..pdf
Online electricity billing project report..pdfOnline electricity billing project report..pdf
Online electricity billing project report..pdfKamal Acharya
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"mphochane1998
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Call Girls Mumbai
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...drmkjayanthikannan
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxMuhammadAsimMuhammad6
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptDineshKumar4165
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VDineshKumar4165
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startQuintin Balsdon
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptxJIT KUMAR GUPTA
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaOmar Fathy
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdfKamal Acharya
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapRishantSharmaFr
 

Kürzlich hochgeladen (20)

S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best ServiceTamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
Tamil Call Girls Bhayandar WhatsApp +91-9930687706, Best Service
 
Online electricity billing project report..pdf
Online electricity billing project report..pdfOnline electricity billing project report..pdf
Online electricity billing project report..pdf
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 

From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)

  • 1. From nothing to a video under 2 seconds Mikhail Sychev, Software Engineer Unicorn at Google
  • 2. Who am I? ● Software Engineer at YouTube ● Evangelist of modern web technologies ● Member of the “Make YouTube Faster” group
  • 3. What we will talk about ● Types of page load, associated challenges and our approach to handling them ● Tools that we use to build and monitor YouTube ● Tricks we learned along the way
  • 4. 1 Second ...users notice the short delay, they stay focused on their current train of thought during the one-second interval … this means that new pages must display within 1 second for users to feel like they're navigating freely; any slower and they feel held back by the computer and don't click as readily. JAKOB NIELSEN http://www.nngroup.com/articles/response-times-3-important-limits/
  • 5. YouTube is a video streaming service, starting video playback as early as possible is the most important task of the Watch page ....yet everything else is important too
  • 6.
  • 7. Video PlayerGuide Metadata Actions Playlist and related videos Comments Metadata Masthead
  • 8. Cold load Warm load Hot load Navigation types
  • 9. Users opening YouTube page with a plain HTTP (s) request ● Full HTML page downloaded and parsed ● Some or no static resources in cache ● Some DNS cache ● Thumbnails have to be downloaded
  • 10. ● Various “pre-browse” techniques ○ http://www.slideshare. net/souders/prebrowsing-velocity-ny-2013 ○ http://www.slideshare. net/MilanAryal/preconnect-prefetch-prerender ● Browsers are really good at rendering HTML soup ○ Because this is what the most of internet is But that’s pretty much it...
  • 11. Good news we have plenty of room for optimizations (bad news is up to us to do all of it) ● How fast can we send data to the browser? ● How much data should be downloaded? ● How much data should be processed? ● Do we have CPU/thread or network congestion?
  • 12. ● HTTP2/SPDY(for http) + QUIC(for video) ● gzip ● Image crushing ● JS compiled by Google closure and modularized ● Icon sprites (WebP where supported) ● Minified CSS ● CDN https://developers.google.com/speed/pagespeed/ Basic things you would expect
  • 13. ● Why should you care? ○ Typed JavaScript ■ Absolutely critical for large teams ○ A set of advanced optimizations ○ HUGE size savings and dead code removal ○ Kind of hard to setup and writing annotations is time consuming Closure compiler
  • 14. ● Try the compiler online: https://closure-compiler.appspot.com/ ● Docs and examples: https://developers.google. com/closure/compiler/docs/api-tutorial2
  • 16. GET / INIT RPC DATA TRANSFER PAGE RENDERING... TEMPLATE STATIC Typical request lifetime ● Browser performs a request ● Backend parses this requests and necessary data is fetched / RPCs called ● Page is rendered via some templating language and sent to browser ● Browser starts to render while fetching the page and downloads external resources
  • 17. ● Browser has nothing to do while we are blocked by RPCs on the backend ● But when we start sending the data it’s forced to render the page while downloading and executing all external resources ● Result - CPU/thread and bandwidth congestion
  • 18. Chunking approach ● Render and send to the browser first chunk containing references to external resources ● Browser starts to fetch them while the connection is still open ● Send extra chunks of data as RPCs are completed ● Serialize data as JSON to be used later if UI is blocking GET / INIT T0 DATA TRANSFER RNDR... RPC1 STATIC T1 RPC2 T2 RNDR RNDR
  • 19. Chunking approach Works for client side applications too ● Send links to application resources early ● Render the application chrome, do not wait for page onload event ● Append data as JSON to the end of the page ● Be careful of timing issues ○ You can’t predict if the application is initialized first or if the page is completely downloaded GET / INIT T0 DATA TRANSFER RNDR... RPC STATIC JSON RNDR
  • 20. 350kb of compiled and compressed JS Here comes the player
  • 21. Player ● Player is large ○ It’s not just a video tag ○ Ads, format selection logic, UI, annotations, etc… ○ Sometimes we have to fallback to Flash ● Just executing all the necessary JS is a significant CPU task ● We really don’t want to do this on every page load (but nothing we can do for cold loads) ● Player can be blocked by OS (video and audio init)
  • 22. Player ● No silver bullet for cold load ● Have to carefully profile and optimize the code ● Send the player early and init early ● But the page may still be downloading/painting ● So try not to get in the way e.g. asking the page for the container size of the player may trigger relayout blocking the browser for 10x ms
  • 23. Player ● tldr: Efficient video playback is HARD, we have a whole team dedicating to making it fast ● Pick your battles and don’t try to support every browser/platform unless you absolutely have to ● Focus on HTML5 if possible, Flash is slowly going away
  • 25.
  • 26.
  • 27. Thumbnails ● 10+ thumbnails above the fold on the Watch page ● Some of the pages are mostly thumbnails ● Important for users to decide what to watch, we want thumbnails as fast as possible unless they are in the path of video
  • 29. ● Only images above the fold are important on initial page display, everything else can be loaded later ● But some extra ones can still be preloaded to prevent thumbnail popping Delay/Lazy loading
  • 30. ● Can’t start loading of the images until JS can be executed and forces re-layout ● Not the best solution if most of the images are above the fold ● We use hybrid approach, do not preloader thumbnails that are always above the fold and affect user behavior Delay/Lazy loading
  • 31. Visible to the user on page load Invisible, but preloaded Invisible to the user, not loaded
  • 32. “WebP is a new image format that provides lossless and lossy compression for images on the web. WebP lossless images are 26% smaller in size compared to PNGs. WebP lossy images are 25-34% smaller in size...”
  • 33.
  • 34.
  • 35. ● Chrome (+mobile) ● Opera (+mobile) ● FF and IE through WebPJS ● Android 4.0+ ● iOS (through 3rd party libraries) ● WebKit based console applications http://caniuse.com/webp
  • 36. Use WebP for sprites and for thumbnails if you can afford extra space and wants to serve to native clients. mileage may vary but expect 10% faster page load
  • 38.
  • 39. ● Browsers already has priorities ● Sometimes we want more control ● Fetching of video bytes should be more important than thumbnails ● But this requires large codebase refactoring ○ Triggers potential race conditions and issues of various kinds ● setInterval and setTimeout hijacking as a simple introduction of scheduling
  • 41. ● A navigation from one YouTube page to another in the same tab/window ● We have full control, can use rel=”pre-whatever” ● Can we do better? ○ Only transfer JSON data? ■ Requires to rewrite all backend templates ■ Browser are actually really good at rendering html soup
  • 42. http://youtube.github.io/spfjs/ https://www.youtube.com/watch?v=yNe_HdayTtY aka “that red bar on top of the page” ● State and history management ● In memory caching ● Chunked JSON responses ● Partial DOM updates
  • 43. ● Lightweight alternative to rewriting all of the backend templates ● Chunks of the page are send from backend as chunked JSON ○ Some overhead on escaping (don’t mess up your JSON) ○ Overall JSON responses are smaller ● Player preinit on non Watch and persistent player across page boundaries ● Less DOM changes on navigation ● Custom caching
  • 44. Critical Stages of Playback
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57. 13% QPS decrease 40% faster playback
  • 59. ● Can we do better? Cache? ○ Visited pages/history - necessary to get the back/forward right ○ Tricky, first page load problem ■ If first page is rendered on backend, how do we go back? ○ How does this affect the metrics? ○ Can we do even better? Cache pages that would visited with high probability(next video in autoplay for example?) ○ But what if the user does not go to next page? ■ Even more metric craziness ■ More QPS
  • 60. ● Every latency impacting change goes through A/B testing ● Monitor both latency impact and user behaviors ● Making things fast is good, but sometimes we have to revisit experiments due to behavior changes (especially for delay loading) Monitoring
  • 61. ● Regressions happen all the time ○ Some are expected, like YouTube logo doodles ○ Some are real issues ● A lot of things can change ○ Sizes of common static resources ○ Number of images on the page ○ Latency of server responses
  • 62. ● We log timestamps of important events, server time, aft, qoe, etc.. ● Browsers react differently, so we collect data per browser ○ Version, background state, etc... ● http://www.webpagetest.org ● In addition we use many in-house tools to for monitoring and notification
  • 63.
  • 65. ● Aim for average page load latency of 1 second or better ● Different types of page loads may require different approach ● Use WebP for sprites(usually) and thumbnails(if possible) ● Google closure compiler is awesome, but hard to set up - use it if you can ● Minimize amount of work done on every load (persistent player)
  • 66. ● Understand how the browser works ● SPF is a reasonable alternative to replacing everything with client side templating, saves QPS and makes everything faster ● Chunking unblocks the browser, but requires backend to support it ● Monitor everything, A/B testing is important, profiling is critical