SlideShare uma empresa Scribd logo
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 $$$”
Performance na web, além do framework
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!

Mais conteúdo relacionado

PDF
Sites Responsivos - Como mostrar o mesmo conteúdo em diversos aparelhos
ODP
Otimize sua web page e web components
PDF
Web Design Responsivo
PPTX
Como desenvolver com um sistema com um front-end colossal?
PDF
SAPO QA Sessions #2
PDF
SAPO QA Sessions #1
PDF
Hello Bootstrap!
PPT
Passo a Passo SEO - Otimização de Sites para Sistemas de Busca
Sites Responsivos - Como mostrar o mesmo conteúdo em diversos aparelhos
Otimize sua web page e web components
Web Design Responsivo
Como desenvolver com um sistema com um front-end colossal?
SAPO QA Sessions #2
SAPO QA Sessions #1
Hello Bootstrap!
Passo a Passo SEO - Otimização de Sites para Sistemas de Busca

Semelhante a Performance na web, além do framework (20)

PDF
Alta Performance em Aplicações Web
PDF
Lightning Talk: Webdev who?
PPTX
Performance e otimização no wordpress
PDF
O papel do Front-End na UX
PPTX
A Evolução do Front end
PPTX
Otimização de Websites para Ganho de Performance & Resiliência
PDF
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
PDF
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
PDF
JS Experience 2017 - Otimizando o front end
PDF
Pangea - Plataforma digital com Google Cloud Platform
PPTX
1- Apresentacao Metodologia RCP
PPTX
1 apresentacao metodologia rcp
PPTX
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
PPTX
Boas Práticas em Aplicações Silverlight 2
PDF
Desenvolvimento Web Parte I
PDF
Escala Já!
PDF
Produtividade
PDF
Desenvolvimento Ágil com Play! Framework
PDF
CV Alexandre R. de Castro
PDF
Tracking.js: um framework open source de visão computacional
Alta Performance em Aplicações Web
Lightning Talk: Webdev who?
Performance e otimização no wordpress
O papel do Front-End na UX
A Evolução do Front end
Otimização de Websites para Ganho de Performance & Resiliência
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
JS Experience 2017 - Otimizando o front end
Pangea - Plataforma digital com Google Cloud Platform
1- Apresentacao Metodologia RCP
1 apresentacao metodologia rcp
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
Boas Práticas em Aplicações Silverlight 2
Desenvolvimento Web Parte I
Escala Já!
Produtividade
Desenvolvimento Ágil com Play! Framework
CV Alexandre R. de Castro
Tracking.js: um framework open source de visão computacional
Anúncio

Último (16)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Arquitetura de computadores - Memórias Secundárias
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Anúncio

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 $$$”
  • 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!