SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Palestrante 
■ Programador PHP há mais de 10 anos 
■ Trabalhou em grandes projetos nacionais 
para o governo e telecomunicações 
■ Interesse em P&D/Performance
Projeto Web APP Mobile 
■ Web APP desenvolvido em HTML5 e PHP 
■ Problemas de performance 
✗ Lentidão na abertura inicial 
✗ Travamentos
Arquitetura de 
comunicação mobile 
■ Maior latência (Round-trip delay time) 
✓ Wifi: 2ms ✓ 3G: 100ms ✓ EDGE: 300ms 
300ms 30ms
■ Utilizar como base 300ms RTT (EDGE) 
■ EDGE: 250Kbps = 31,25KBps 
■ Google Devtools 
Meta (6 hits/requisição) 
1 Hit Dinâmico > 300ms RTT + até 150ms 
5 Hits Estáticos > 1500ms RTT + 5x10ms 
Total: ~2 segundos
Recursos estáticos 
e sua influência 
Por que isso é 
um malabarismo?
Percepção 
A forma como se otimiza pode ser ruim 
para o usuário
Ordem correta de otimização 
■ Priorize conteúdo 
✓ Atrase o carregamento do JS 
✓ Coloque inline o CSS do carregamento inicial 
✓ Adicione um fallback para biblioteca JS 
✓ Agrupe o restante do JS
✓ Agrupe o CSS 
✓ Minifier 
✓ GZIP 
✓ Não use QueryString 
Mas isso não é carregado apenas uma vez? 
Por que eu preciso me preocupar com isso? 
Essa palestra é de front-end? 
Onde é a saída?
WebAPP, WebView e HTML5 
O WebView e WebAPP desgastando DEV’s 
■ Android 4.3 < WebView é Chrome 11 (2010) 
■ Android 4.4 > WebView é Chrome 30 (2013) 
■ Versão atual do Chrome é 39 (2014) 
■ O iOS segue a mesma lógica
polymer-project.org 
Android 4.3 
Chrome for Android 39 WebView e Chrome 11
polymer-project.org 
Android 4.4 
Android WebKit Browser Ops...
Versões Android 
Versão Nome Distribuição 
2.2 Froyo 0.5% 
2.3.3 - 
Gingerbread 9.1% 
2.3.7 
4.0.3 - 
4.0.4 
Ice Cream 
Sandwich 
7.8% 
4.1.x Jelly Bean 21.3% 
4.2.x 20.4% 
4.3 7.0% 
4.4 KitKat 33.9% 
Fonte: Dashboards | Android Developers
Por que eu preciso saber isso!? 
HTML5, JS, CSS, Imagens, Fontes... Apenas XHTML, CSS e imagens
9 Hits - 13KB - 0,7 Segundos
29 Hits - 398KB - 13 Segundos
35 Hits - 306KB - 4 Segundos
211 Hits - 1.8MB - 8 Segundos
143 Hits - 3.6MB - 27 Segundos
Mobile Básico 
Folha 9 Hits 13KB 0,75 Segundos 
Estadão 29 Hits 398KB 13 Segundos 
Mobile Avançado 
Folha 35 Hits 306KB 4 Segundos 
Globo 211 Hits 1.8MB 8 Segundos 
New York Times 143 Hits 3.6MB 27 Segundos
Melhor Aplicabilidade de 
Memcache 
■ Coloque o máximo de dados comuns 
■ Faça invalidação na gravação 
■ Não é necessário excluir um item 
ITENS NO CACHE 
Tempo 
Qtd
Sessão + Memcache 
Hits Sessão por hit Memória Servidor 
10 1MB 10MB 
100 1MB 100MB 
100 10MB 1GB 
1000 1MB 1GB 
■ O Memcache permite que a sessão fique 
descentralizada
■ Retira o acesso ao disco e melhora 
a leitura 
■ O que não resolve 
✗ Todo session_start() adiciona o dado na 
memória do servidor 
■ Adicione apenas dados básicos
Memcache e acesso 
compartilhado
■ 10MB comum + 1MB específico 
Hits Memcache Servidor Total Sem Memcache 
10 10MB + 10MB 60MB 80MB 170MB 
100 10MB + 100MB 600MB 710MB 1.7GB 
300 10MB + 300MB 1.8GB 2.1GB 5.1GB
Pool Memcache 
■ Leitura mais rápida e escrita mais lenta 
■ Leitura é frequente, escrita não 
1x 4GB 4x 1GB
Cruzamento de dados relevantes 
■ Considere apenas hit dinâmico
Calculando... 
■ PV/Requisição ~> Analytics 
■ Hit/PV ~> DevTools
Otimização 
■ Redução na quantidade de hits dinâmicos 
11 19 209 Antes 
16 7 119 Depois
Feedback 
■ Após melhorias o número de usuários 
cresceu... 
Visualização de página 
Visitantes 
Visitantes Únicos 
Acessos
■ ...e o servidor esfriou também 
Mês 
HITs 
MEMCACHE
Ações 
■ Garantir que será mantido durante 
manutenção 
✓ Uglify 
✓ CSSmin 
Desenvolvimento 
Produção
■ Lembra da pergunta? Aqui +90% é acesso 
sem cache algum! 
■ Como dimensionar? Utilize os dados que 
você tem!
201 milhões de habitantes 
142 milhões de eleitores 
107 milhões votaram 
20 milhões para cada um 
dos 5 maiores veículos
5500 visitantes simultâneos 
275 (5%) vai para mobile 
250 novos 
visitantes únicos 
49750 Hits
Eleições ‘14 
Fluxo de acesso
PROXY REVERSO 
PHP 
Tráfego 
Mês 
Mês 
Tempo de 
processador
MEMCACHE 
BANCO DE DADOS 
HITs 
Dias 
Mês 
Load
Agradecimentos e contato 
❖ Folha de S.Paulo 
http://about.me/webysther 
Google It! Webysther 
❖ GitHub 
❖ Google

Weitere ähnliche Inhalte

Was ist angesagt?

NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 
Redacao Digital C Se
Redacao Digital C SeRedacao Digital C Se
Redacao Digital C SeAna Brambilla
 
Palestra: Otimização de websites
Palestra: Otimização de websitesPalestra: Otimização de websites
Palestra: Otimização de websitesIntrus
 
Devcommerce Manifesto Reativo
Devcommerce Manifesto ReativoDevcommerce Manifesto Reativo
Devcommerce Manifesto ReativoIgor Costa
 
Instalando e configurando o WordPress local
Instalando e configurando o WordPress localInstalando e configurando o WordPress local
Instalando e configurando o WordPress localDeblyn Prado
 
Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Fabio Telles Rodriguez
 
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...iMasters
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 
Utilizando RabbitMQ com .NET Core e EasyNetQ
Utilizando RabbitMQ com .NET Core e EasyNetQUtilizando RabbitMQ com .NET Core e EasyNetQ
Utilizando RabbitMQ com .NET Core e EasyNetQRobson Rocha de Araújo
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsAndre Baltieri
 

Was ist angesagt? (12)

NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
 
Redacao Digital C Se
Redacao Digital C SeRedacao Digital C Se
Redacao Digital C Se
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
Palestra: Otimização de websites
Palestra: Otimização de websitesPalestra: Otimização de websites
Palestra: Otimização de websites
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Devcommerce Manifesto Reativo
Devcommerce Manifesto ReativoDevcommerce Manifesto Reativo
Devcommerce Manifesto Reativo
 
Instalando e configurando o WordPress local
Instalando e configurando o WordPress localInstalando e configurando o WordPress local
Instalando e configurando o WordPress local
 
Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!
 
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...
[JS EXPERIENCE 2018] Gerenciando o fluxo assincrono de operações Javascript -...
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 
Utilizando RabbitMQ com .NET Core e EasyNetQ
Utilizando RabbitMQ com .NET Core e EasyNetQUtilizando RabbitMQ com .NET Core e EasyNetQ
Utilizando RabbitMQ com .NET Core e EasyNetQ
 
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance TipsASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
 

Andere mochten auch

Google chrome
Google chromeGoogle chrome
Google chromeDary MH
 
Google chrome
Google chromeGoogle chrome
Google chromelis
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Chrome os trabalho
Chrome os   trabalhoChrome os   trabalho
Chrome os trabalhomaykonsilva9
 
Chrome Os Pequeño analisis Dm.
Chrome Os Pequeño analisis Dm.Chrome Os Pequeño analisis Dm.
Chrome Os Pequeño analisis Dm.illpwnya
 
MIRIADA. Modulo I: BÚSQUEDA DE INFORMACIÓN CON GOOGLE.
MIRIADA. Modulo I:  BÚSQUEDA DE INFORMACIÓN CON GOOGLE.MIRIADA. Modulo I:  BÚSQUEDA DE INFORMACIÓN CON GOOGLE.
MIRIADA. Modulo I: BÚSQUEDA DE INFORMACIÓN CON GOOGLE.jputzlorenzi
 
La réaction des consommateurs face à la récession
La réaction des consommateurs face à la récessionLa réaction des consommateurs face à la récession
La réaction des consommateurs face à la récessionFullSIX Group
 
Verspiegelung mit Chromspray System
Verspiegelung mit Chromspray SystemVerspiegelung mit Chromspray System
Verspiegelung mit Chromspray Systemstuaptqbha
 
Informática para Internet - Aula 04
Informática para Internet - Aula 04Informática para Internet - Aula 04
Informática para Internet - Aula 04Anderson Andrade
 
07 08 - A historia da Internet
07 08 - A historia da Internet07 08 - A historia da Internet
07 08 - A historia da InternetAndré Santos
 
Sistemas operativos google chrome os
Sistemas operativos google chrome osSistemas operativos google chrome os
Sistemas operativos google chrome osJorge ALOS
 
Google chrome
Google chromeGoogle chrome
Google chromeIris1481
 
Google chrome os
Google chrome osGoogle chrome os
Google chrome osZone32
 
Google chrome os
Google chrome osGoogle chrome os
Google chrome osarlbailey7
 

Andere mochten auch (20)

Google chrome
Google chromeGoogle chrome
Google chrome
 
Google Chrome OS
Google Chrome OSGoogle Chrome OS
Google Chrome OS
 
Google chrome
Google chromeGoogle chrome
Google chrome
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Chrome OS
Chrome OSChrome OS
Chrome OS
 
Chrome os trabalho
Chrome os   trabalhoChrome os   trabalho
Chrome os trabalho
 
Chromecast
ChromecastChromecast
Chromecast
 
Chrome Os Pequeño analisis Dm.
Chrome Os Pequeño analisis Dm.Chrome Os Pequeño analisis Dm.
Chrome Os Pequeño analisis Dm.
 
MIRIADA. Modulo I: BÚSQUEDA DE INFORMACIÓN CON GOOGLE.
MIRIADA. Modulo I:  BÚSQUEDA DE INFORMACIÓN CON GOOGLE.MIRIADA. Modulo I:  BÚSQUEDA DE INFORMACIÓN CON GOOGLE.
MIRIADA. Modulo I: BÚSQUEDA DE INFORMACIÓN CON GOOGLE.
 
La réaction des consommateurs face à la récession
La réaction des consommateurs face à la récessionLa réaction des consommateurs face à la récession
La réaction des consommateurs face à la récession
 
Verspiegelung mit Chromspray System
Verspiegelung mit Chromspray SystemVerspiegelung mit Chromspray System
Verspiegelung mit Chromspray System
 
Informática para Internet - Aula 04
Informática para Internet - Aula 04Informática para Internet - Aula 04
Informática para Internet - Aula 04
 
Chrome os
Chrome  osChrome  os
Chrome os
 
Chome os
Chome osChome os
Chome os
 
07 08 - A historia da Internet
07 08 - A historia da Internet07 08 - A historia da Internet
07 08 - A historia da Internet
 
Sistemas operativos google chrome os
Sistemas operativos google chrome osSistemas operativos google chrome os
Sistemas operativos google chrome os
 
Google chrome
Google chromeGoogle chrome
Google chrome
 
PR-Budgets 2012
PR-Budgets 2012PR-Budgets 2012
PR-Budgets 2012
 
Google chrome os
Google chrome osGoogle chrome os
Google chrome os
 
Google chrome os
Google chrome osGoogle chrome os
Google chrome os
 

Ähnlich wie Otimizando WebAPPs para dispositivos móveis

Sapo Sessions - Web Mobile
Sapo Sessions - Web MobileSapo Sessions - Web Mobile
Sapo Sessions - Web MobileBruno Carreira
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPCiro Vargas
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Softwarejamersonlima
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Fabiano Weimar
 
Otimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaOtimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaSucuri
 
QCon 2011
QCon 2011QCon 2011
QCon 2011Ismael
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Rodolfo Fadino Junior
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Fabiano Weimar
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0 Duarte Nunes
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndLeonardo Balter
 
Práticas para um Site Otimizado - CaelumDay in Rio 2011
Práticas para um Site Otimizado - CaelumDay in Rio 2011Práticas para um Site Otimizado - CaelumDay in Rio 2011
Práticas para um Site Otimizado - CaelumDay in Rio 2011Caelum
 

Ähnlich wie Otimizando WebAPPs para dispositivos móveis (20)

Sapo Sessions - Web Mobile
Sapo Sessions - Web MobileSapo Sessions - Web Mobile
Sapo Sessions - Web Mobile
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHP
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Software
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Otimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & ResiliênciaOtimização de Websites para Ganho de Performance & Resiliência
Otimização de Websites para Ganho de Performance & Resiliência
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???Meu Plone Site está lento. O que fazer???
Meu Plone Site está lento. O que fazer???
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front End
 
Práticas para um Site Otimizado - CaelumDay in Rio 2011
Práticas para um Site Otimizado - CaelumDay in Rio 2011Práticas para um Site Otimizado - CaelumDay in Rio 2011
Práticas para um Site Otimizado - CaelumDay in Rio 2011
 

Otimizando WebAPPs para dispositivos móveis

  • 1.
  • 2. Palestrante ■ Programador PHP há mais de 10 anos ■ Trabalhou em grandes projetos nacionais para o governo e telecomunicações ■ Interesse em P&D/Performance
  • 3. Projeto Web APP Mobile ■ Web APP desenvolvido em HTML5 e PHP ■ Problemas de performance ✗ Lentidão na abertura inicial ✗ Travamentos
  • 4. Arquitetura de comunicação mobile ■ Maior latência (Round-trip delay time) ✓ Wifi: 2ms ✓ 3G: 100ms ✓ EDGE: 300ms 300ms 30ms
  • 5. ■ Utilizar como base 300ms RTT (EDGE) ■ EDGE: 250Kbps = 31,25KBps ■ Google Devtools Meta (6 hits/requisição) 1 Hit Dinâmico > 300ms RTT + até 150ms 5 Hits Estáticos > 1500ms RTT + 5x10ms Total: ~2 segundos
  • 6. Recursos estáticos e sua influência Por que isso é um malabarismo?
  • 7. Percepção A forma como se otimiza pode ser ruim para o usuário
  • 8. Ordem correta de otimização ■ Priorize conteúdo ✓ Atrase o carregamento do JS ✓ Coloque inline o CSS do carregamento inicial ✓ Adicione um fallback para biblioteca JS ✓ Agrupe o restante do JS
  • 9. ✓ Agrupe o CSS ✓ Minifier ✓ GZIP ✓ Não use QueryString Mas isso não é carregado apenas uma vez? Por que eu preciso me preocupar com isso? Essa palestra é de front-end? Onde é a saída?
  • 10. WebAPP, WebView e HTML5 O WebView e WebAPP desgastando DEV’s ■ Android 4.3 < WebView é Chrome 11 (2010) ■ Android 4.4 > WebView é Chrome 30 (2013) ■ Versão atual do Chrome é 39 (2014) ■ O iOS segue a mesma lógica
  • 11. polymer-project.org Android 4.3 Chrome for Android 39 WebView e Chrome 11
  • 12. polymer-project.org Android 4.4 Android WebKit Browser Ops...
  • 13. Versões Android Versão Nome Distribuição 2.2 Froyo 0.5% 2.3.3 - Gingerbread 9.1% 2.3.7 4.0.3 - 4.0.4 Ice Cream Sandwich 7.8% 4.1.x Jelly Bean 21.3% 4.2.x 20.4% 4.3 7.0% 4.4 KitKat 33.9% Fonte: Dashboards | Android Developers
  • 14. Por que eu preciso saber isso!? HTML5, JS, CSS, Imagens, Fontes... Apenas XHTML, CSS e imagens
  • 15. 9 Hits - 13KB - 0,7 Segundos
  • 16. 29 Hits - 398KB - 13 Segundos
  • 17. 35 Hits - 306KB - 4 Segundos
  • 18. 211 Hits - 1.8MB - 8 Segundos
  • 19. 143 Hits - 3.6MB - 27 Segundos
  • 20. Mobile Básico Folha 9 Hits 13KB 0,75 Segundos Estadão 29 Hits 398KB 13 Segundos Mobile Avançado Folha 35 Hits 306KB 4 Segundos Globo 211 Hits 1.8MB 8 Segundos New York Times 143 Hits 3.6MB 27 Segundos
  • 21. Melhor Aplicabilidade de Memcache ■ Coloque o máximo de dados comuns ■ Faça invalidação na gravação ■ Não é necessário excluir um item ITENS NO CACHE Tempo Qtd
  • 22. Sessão + Memcache Hits Sessão por hit Memória Servidor 10 1MB 10MB 100 1MB 100MB 100 10MB 1GB 1000 1MB 1GB ■ O Memcache permite que a sessão fique descentralizada
  • 23. ■ Retira o acesso ao disco e melhora a leitura ■ O que não resolve ✗ Todo session_start() adiciona o dado na memória do servidor ■ Adicione apenas dados básicos
  • 24. Memcache e acesso compartilhado
  • 25. ■ 10MB comum + 1MB específico Hits Memcache Servidor Total Sem Memcache 10 10MB + 10MB 60MB 80MB 170MB 100 10MB + 100MB 600MB 710MB 1.7GB 300 10MB + 300MB 1.8GB 2.1GB 5.1GB
  • 26. Pool Memcache ■ Leitura mais rápida e escrita mais lenta ■ Leitura é frequente, escrita não 1x 4GB 4x 1GB
  • 27. Cruzamento de dados relevantes ■ Considere apenas hit dinâmico
  • 28.
  • 29. Calculando... ■ PV/Requisição ~> Analytics ■ Hit/PV ~> DevTools
  • 30. Otimização ■ Redução na quantidade de hits dinâmicos 11 19 209 Antes 16 7 119 Depois
  • 31. Feedback ■ Após melhorias o número de usuários cresceu... Visualização de página Visitantes Visitantes Únicos Acessos
  • 32. ■ ...e o servidor esfriou também Mês HITs MEMCACHE
  • 33. Ações ■ Garantir que será mantido durante manutenção ✓ Uglify ✓ CSSmin Desenvolvimento Produção
  • 34. ■ Lembra da pergunta? Aqui +90% é acesso sem cache algum! ■ Como dimensionar? Utilize os dados que você tem!
  • 35. 201 milhões de habitantes 142 milhões de eleitores 107 milhões votaram 20 milhões para cada um dos 5 maiores veículos
  • 36. 5500 visitantes simultâneos 275 (5%) vai para mobile 250 novos visitantes únicos 49750 Hits
  • 38. PROXY REVERSO PHP Tráfego Mês Mês Tempo de processador
  • 39. MEMCACHE BANCO DE DADOS HITs Dias Mês Load
  • 40. Agradecimentos e contato ❖ Folha de S.Paulo http://about.me/webysther Google It! Webysther ❖ GitHub ❖ Google