SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Performance na web, além do framework
Tá Safo em Ação!
22/11/2013
Belém – Pará – Brasil
Alexandre Cardoso (@accbel)
●

Analista de desempenho – InMetrics - SP

●

Desenvolvendo software há 13 anos

●

Java, Scala, Ruby, Web, Arquitetura, Performance

●

TáSafoConf 2012

●

Editor do Scalando.com.br
Desenvolvimento para a Web
O que (normalmente) está
nas preocupações do
desenvolvedor web?
Linguagem?
Framework?
SQL? NoSQL?
Front-end?
UX?
SEO?
Automated tests?
Mobile?
Social?
Responsive design?
Por quê precisamos nos preocupar com isso?
“Queremos implementar projetos
e produtos de sucesso”

“Queremos aproveitar
oportunidades
profissionais e de
mercado”

“Queremos ganhar $$$”
Fatores técnicos e não-técnicos

Isolados ou combinados

Determinam o sucesso ou fracasso
Um dos mais importantes é:

Experiência de Usuário (UX)
Experiência de Usuário - UX
“Define como pessoas se sentem quando interagem com um sistema (…),
incluindo emoções, crenças, preferências, percepções, reações físicas e
psicológicas, comportamentos e realizações do usuário que ocorrem antes,
durante e após o uso.”'

Fonte: http://www.touchpoints.com.br/experiencia-do-usuario
“Percepção”

“Reação”

“Realização”
Usuários tendo a melhor percepção de seu site

Usuários realizados ao buscar e acessar seu site

Usuário reagem com satisfação aos serviços do site
“(...) mas ele só carrega rapidamente na internet de 1Gbps do
escritório”
UX é super importante, assim como outros fatores, mas...
“Sites lentos não vivem pra contar histórias”
Performance importa pra quem?

“33% of broadband shoppers are unwilling to wait more than
four seconds for a web page to load, whereas 43% of
narrowband users will not wait more than six seconds
(Akamai, 2006)”
“every 100 ms increase in load time of Amazon.com
decreased sales by 1%”

Fonte: http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/
Entretanto...

“Brasil está em 72º lugar
no ranking de velocidade
média de internet”

Fonte:http://www.tecmundo.com.br/internet/42327-brasil-esta-em-72-lugar-no-ranking-de-velocidade-media-de-internet.htm
Desenvolvimento web para a realidade brasileira, cada vez
mais móvel, conciliando inovação, UX e performance, é um
grande desafio.

O 3G brasileiro é uma “piada” e, mesmo
assim, milhões de pessoas vão fechar
negócios pelo celular
O que você,
desenvolvedor web,
pode fazer a respeito?
Você é livre para fazer
escolhas que suportem
seu projeto...
Para todas elas, hoje e por muito tempo (ainda), o mesmo
produto final

O front-end
Pensar o front-end desde o início, voltado para performance,
em 3 pilares

Design

Código

Requisições
Design e performance
●

Cuidado com imagens (quantidade e tamanho)

650 KB (?!)
Design e performance
●

Definir imagens de tamanhos distintos e serví-las quando necessário,
evitando redimensionamento no navegador.
150x150
71x71
30x30

<img alt="A_picture" src="/images/picture_150_150.jpg">
<img alt="A_picture" src="/images/picture_71_71.jpg">
<img alt="A_picture" src="/images/picture_30_30.jpg">
TIP: Evitar download de uma imagem pesada, onde ela não é necessária
Design e performance
●

Definir e aplicar a taxa de compressão adequada, sem perda
excessiva de qualidade

Arquivo original (PNG): 43KB

JPEG – Compressão 100% - 24KB

JPEG – Compressão 80% - 14KB

TIP: Largura de banda é
um recurso escasso e
não-controlado. Otimizar,
sempre que possível.
Código e performance
●

Evite código inline/embarcado no seu HTML.

●

Difícil de manter

●

Aumenta o tamanho (KB)
do HTML

●

Não pode ser “cacheado”
Código e performance
●

Use referências externas para os assets do HTML.

●

Fácil de manter

●

HTML menor (KB) e mais
enxuto

●

Candidato ao cache do
navegador
Código e performance
●

Não custa lembrar: CSS no topo e JS no final!

●

CSS links bloqueiam a
renderização até o fim do
download. Antecipe.

●

Tags <script> bloqueiam
downloads de outros
recursos, como imagens.
Deixe por último.
Código e performance
●

●

●

Javascript? Uma caixinha de surpresas. Saiba o que está fazendo.

Várias maneiras de
percorrer um array
Diferenças absurdas de
performance

●

Fazer cache evita
recálculos durante
a execução

●

jQuery facilita
muito, mas tem
seu preço
Requests e performance
●

Fazer download de white spaces e tabulações? “Minifique!”

●

372 bytes > 284 bytes (- 24%)

●

Como? HTML Compressor
Requests e performance
●

O mesmo também vale para CSS. Comprimir para otimizar.

Mesmo efeito e 40% menor.

Como?
●

Yahoo YUI Compressor

●

SAAS “:compressed”

●

CSSO
Requests e performance
●

Javascript, você é o próximo. #minify #compression

Como?
●

Google Closure Compiler

●

Yahoo YUI Compressor

●

UglifyJS

Mesmo efeito e 49% menor.
Requests e performance
●

Várias requisições para exibir apenas uma página? Agrupar recursos
estáticos (CSS e Javascript), para servir de uma vez só.

Download mais eficiente, página renderizada mais rapidamente

Como?
●

GruntJS + Plugins

●

Wro4J
Requests e performance
●

Layout com muitas imagens (ícones, etc)? Utilize CSS Sprites

Como?
●

SmartSprites

●

Compass Spriting

.icon-edit {
background-image: url("../img/glyphicons-halflings-white.png");
background-position: -96px -72px;
}
Requests e performance
●

Se algo não muda, pegue uma vez e guarde (até mudar). Utilize o
cache do navegador.

server {
listen 80;
server_name www.mysite.com.br;
root /path/to/site;
...
location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
expires max;
add_header Cache-Control public;
}
....

Atenção!
Não esqueça de “assinar” as
URL's dos assets, para ter
controle sobre a renovação
do cache
●

/assets/main.js?v123

1ª visita ao site
●

<script src=”/assets/main.js?v123”> → Requisita o arquivo ao servidor – 200 (OK)

2ª visita ao site
●

<script src=”/assets/main.js?v123”> → Utiliza a cópia armazenada no cache local
Requests e performance
●

Otimize ainda mais o tamanho da resposta. Ative a compressão
HTTP
http {
...
# enable gzip compression
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/html application/x-javascript text/css;
gzip_vary on;
# end gzip configuration
...
}
$ curl --header "Accept-Encoding: gzip,deflate,sdch" -I http://www.mysite.com
HTTP/1.1 200 OK
Server: nginx
...
Content-Encoding: gzip
Legal. Já entendi que
otimizar é muito
importante, mas...

Como saber se meu
site precisa ser
otimizado e onde?
Monitorar é preciso!
Google Page Speed Insights

●

Antigo “Google Page Speed”

●

Analisa e define um score de
uma página web para seu
desempenho

●

Sugere um conjunto de
melhorias para diversas áreas
do front-end de uma página
web

●

Oferece uma API para análise
remota. Ideal para integrar ao
seu ambiente de CI (Jenkins,
etc)
Yahoo! YSlow

●

Mesmo princípio e objetivo do
Google Page Speed Insights

●

Possui extensões/plugins para
os principais navegadores

●

Permite executar uma análise
via linha de comando (requer
NodeJS/NPM)
O assunto é amplo! Referências sobre front-end performance
●

Improving UX Through Front-End Performance

●

Front-end performance for web designers and front-end developers

●

How to lose WEIGHT (in the browser)

●

Web Performance Best Practices

●

Web Assets – Tips for Better Organization and Performance

●

Google :)
Linguagem, frameworks, bancos, tecnologias em geral: Suas escolhas.

Performance: O produto a ser entregue!
Obrigado!

Weitere ähnliche Inhalte

Ähnlich wie Performance na web, além do framework

Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações WebAnderson Aguiar
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
O papel do Front-End na UX
O papel do Front-End na UXO papel do Front-End na UX
O papel do Front-End na UXEdu Agni
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front endDouglas Matoso
 
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
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Andre Santos
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endiMasters
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCPFrank Coelho
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...Cleber Dantas
 
Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2sagostinho
 
Desenvolvimento Web Parte I
Desenvolvimento Web Parte IDesenvolvimento Web Parte I
Desenvolvimento Web Parte Iigorpimentel
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkKeuller Magalhães
 
Tracking.js: um framework open source de visão computacional
Tracking.js: um framework open source de visão computacional Tracking.js: um framework open source de visão computacional
Tracking.js: um framework open source de visão computacional João Gabriel Lima
 

Ähnlich wie Performance na web, além do framework (20)

Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
O papel do Front-End na UX
O papel do Front-End na UXO papel do Front-End na UX
O papel do Front-End na UX
 
A Evolução do Front end
A Evolução do Front endA Evolução do Front end
A Evolução do Front end
 
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
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front end
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
 
Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2Boas Práticas em Aplicações Silverlight 2
Boas Práticas em Aplicações Silverlight 2
 
Desenvolvimento Web Parte I
Desenvolvimento Web Parte IDesenvolvimento Web Parte I
Desenvolvimento Web Parte I
 
Escala Já!
Escala Já!Escala Já!
Escala Já!
 
Produtividade
ProdutividadeProdutividade
Produtividade
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! Framework
 
CV Alexandre R. de Castro
CV Alexandre R. de CastroCV Alexandre R. de Castro
CV Alexandre R. de Castro
 
Tracking.js: um framework open source de visão computacional
Tracking.js: um framework open source de visão computacional Tracking.js: um framework open source de visão computacional
Tracking.js: um framework open source de visão computacional
 

Performance na web, além do framework

  • 1. Performance na web, além do framework Tá Safo em Ação! 22/11/2013 Belém – Pará – Brasil
  • 2. Alexandre Cardoso (@accbel) ● Analista de desempenho – InMetrics - SP ● Desenvolvendo software há 13 anos ● Java, Scala, Ruby, Web, Arquitetura, Performance ● TáSafoConf 2012 ● Editor do Scalando.com.br
  • 4. O que (normalmente) está nas preocupações do desenvolvedor web?
  • 6. Por quê precisamos nos preocupar com isso?
  • 7. “Queremos implementar projetos e produtos de sucesso” “Queremos aproveitar oportunidades profissionais e de mercado” “Queremos ganhar $$$”
  • 8.
  • 9. Fatores técnicos e não-técnicos Isolados ou combinados Determinam o sucesso ou fracasso
  • 10. Um dos mais importantes é: Experiência de Usuário (UX)
  • 11. Experiência de Usuário - UX “Define como pessoas se sentem quando interagem com um sistema (…), incluindo emoções, crenças, preferências, percepções, reações físicas e psicológicas, comportamentos e realizações do usuário que ocorrem antes, durante e após o uso.”' Fonte: http://www.touchpoints.com.br/experiencia-do-usuario
  • 13. Usuários tendo a melhor percepção de seu site Usuários realizados ao buscar e acessar seu site Usuário reagem com satisfação aos serviços do site
  • 14. “(...) mas ele só carrega rapidamente na internet de 1Gbps do escritório”
  • 15. UX é super importante, assim como outros fatores, mas... “Sites lentos não vivem pra contar histórias”
  • 16. Performance importa pra quem? “33% of broadband shoppers are unwilling to wait more than four seconds for a web page to load, whereas 43% of narrowband users will not wait more than six seconds (Akamai, 2006)” “every 100 ms increase in load time of Amazon.com decreased sales by 1%” Fonte: http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/
  • 17. Entretanto... “Brasil está em 72º lugar no ranking de velocidade média de internet” Fonte:http://www.tecmundo.com.br/internet/42327-brasil-esta-em-72-lugar-no-ranking-de-velocidade-media-de-internet.htm
  • 18. Desenvolvimento web para a realidade brasileira, cada vez mais móvel, conciliando inovação, UX e performance, é um grande desafio. O 3G brasileiro é uma “piada” e, mesmo assim, milhões de pessoas vão fechar negócios pelo celular
  • 19. O que você, desenvolvedor web, pode fazer a respeito?
  • 20. Você é livre para fazer escolhas que suportem seu projeto...
  • 21. Para todas elas, hoje e por muito tempo (ainda), o mesmo produto final O front-end
  • 22. Pensar o front-end desde o início, voltado para performance, em 3 pilares Design Código Requisições
  • 23. Design e performance ● Cuidado com imagens (quantidade e tamanho) 650 KB (?!)
  • 24. Design e performance ● Definir imagens de tamanhos distintos e serví-las quando necessário, evitando redimensionamento no navegador. 150x150 71x71 30x30 <img alt="A_picture" src="/images/picture_150_150.jpg"> <img alt="A_picture" src="/images/picture_71_71.jpg"> <img alt="A_picture" src="/images/picture_30_30.jpg"> TIP: Evitar download de uma imagem pesada, onde ela não é necessária
  • 25. Design e performance ● Definir e aplicar a taxa de compressão adequada, sem perda excessiva de qualidade Arquivo original (PNG): 43KB JPEG – Compressão 100% - 24KB JPEG – Compressão 80% - 14KB TIP: Largura de banda é um recurso escasso e não-controlado. Otimizar, sempre que possível.
  • 26. Código e performance ● Evite código inline/embarcado no seu HTML. ● Difícil de manter ● Aumenta o tamanho (KB) do HTML ● Não pode ser “cacheado”
  • 27. Código e performance ● Use referências externas para os assets do HTML. ● Fácil de manter ● HTML menor (KB) e mais enxuto ● Candidato ao cache do navegador
  • 28. Código e performance ● Não custa lembrar: CSS no topo e JS no final! ● CSS links bloqueiam a renderização até o fim do download. Antecipe. ● Tags <script> bloqueiam downloads de outros recursos, como imagens. Deixe por último.
  • 29. Código e performance ● ● ● Javascript? Uma caixinha de surpresas. Saiba o que está fazendo. Várias maneiras de percorrer um array Diferenças absurdas de performance ● Fazer cache evita recálculos durante a execução ● jQuery facilita muito, mas tem seu preço
  • 30. Requests e performance ● Fazer download de white spaces e tabulações? “Minifique!” ● 372 bytes > 284 bytes (- 24%) ● Como? HTML Compressor
  • 31. Requests e performance ● O mesmo também vale para CSS. Comprimir para otimizar. Mesmo efeito e 40% menor. Como? ● Yahoo YUI Compressor ● SAAS “:compressed” ● CSSO
  • 32. Requests e performance ● Javascript, você é o próximo. #minify #compression Como? ● Google Closure Compiler ● Yahoo YUI Compressor ● UglifyJS Mesmo efeito e 49% menor.
  • 33. Requests e performance ● Várias requisições para exibir apenas uma página? Agrupar recursos estáticos (CSS e Javascript), para servir de uma vez só. Download mais eficiente, página renderizada mais rapidamente Como? ● GruntJS + Plugins ● Wro4J
  • 34. Requests e performance ● Layout com muitas imagens (ícones, etc)? Utilize CSS Sprites Como? ● SmartSprites ● Compass Spriting .icon-edit { background-image: url("../img/glyphicons-halflings-white.png"); background-position: -96px -72px; }
  • 35. Requests e performance ● Se algo não muda, pegue uma vez e guarde (até mudar). Utilize o cache do navegador. server { listen 80; server_name www.mysite.com.br; root /path/to/site; ... location ~* .(?:ico|css|js|gif|jpe?g|png)$ { expires 30d; expires max; add_header Cache-Control public; } .... Atenção! Não esqueça de “assinar” as URL's dos assets, para ter controle sobre a renovação do cache ● /assets/main.js?v123 1ª visita ao site ● <script src=”/assets/main.js?v123”> → Requisita o arquivo ao servidor – 200 (OK) 2ª visita ao site ● <script src=”/assets/main.js?v123”> → Utiliza a cópia armazenada no cache local
  • 36. Requests e performance ● Otimize ainda mais o tamanho da resposta. Ative a compressão HTTP http { ... # enable gzip compression gzip on; gzip_min_length 1100; gzip_buffers 4 32k; gzip_types text/html application/x-javascript text/css; gzip_vary on; # end gzip configuration ... } $ curl --header "Accept-Encoding: gzip,deflate,sdch" -I http://www.mysite.com HTTP/1.1 200 OK Server: nginx ... Content-Encoding: gzip
  • 37. Legal. Já entendi que otimizar é muito importante, mas... Como saber se meu site precisa ser otimizado e onde?
  • 39. Google Page Speed Insights ● Antigo “Google Page Speed” ● Analisa e define um score de uma página web para seu desempenho ● Sugere um conjunto de melhorias para diversas áreas do front-end de uma página web ● Oferece uma API para análise remota. Ideal para integrar ao seu ambiente de CI (Jenkins, etc)
  • 40. Yahoo! YSlow ● Mesmo princípio e objetivo do Google Page Speed Insights ● Possui extensões/plugins para os principais navegadores ● Permite executar uma análise via linha de comando (requer NodeJS/NPM)
  • 41. O assunto é amplo! Referências sobre front-end performance ● Improving UX Through Front-End Performance ● Front-end performance for web designers and front-end developers ● How to lose WEIGHT (in the browser) ● Web Performance Best Practices ● Web Assets – Tips for Better Organization and Performance ● Google :)
  • 42. Linguagem, frameworks, bancos, tecnologias em geral: Suas escolhas. Performance: O produto a ser entregue!