SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
PERFORMANCE
Acelere seu site!
Na web tempo é mais que dinheiro.
Fontes:
http://www.strangeloopnetworks.com/assets/images/visualizing_web_performance_poster.jpg
http://www.webperformancetoday.com/2012/02/28/4-awesome-slides-showing-how-page-speed-correlates-to-business-metrics-at-walmart-com/
Amazon’s revenue increased 1% per 100ms of
reduced loading time
Every 1second reduction in loading time correlated to a 2%
increase in web traffic.
Every 100ms of reduced loading time lead to an increase in
incremental revenue of as much as 1%.
After Mozilla made their page 2.2 seconds quicker to load, the company
saw downloads of Firefox increase by 5 million per month.
For every 400ms’ reduction in loading time,Yahoo’s traffic
increased by 9%
Adopting a single optimization, gzip compression, resulted in a
13-25% speedup and cut their outbound network traffic by
50%.
No que diz respeito a performance no client-side, se uníssemos…
+ +
teríamos ninguém menos que…
=
Steve Souders
Ex Head Performance Engineer na
Google, Chief Performance Yahoo! e
Chief Performance Officer na Fastly.
Autor de livros e artigos sobre o
assunto e criador de ferramentas que
auxiliam a melhora de performance
No post "the Performance Golden Rule” Steve diz que:
80-90% of the end-user response time is spent on the front-end.
Fonte: http://www.stevesouders.com/blog/2012/02/10/the-
performance-golden-rule/
SUMÁRIO
• HTML
• CSS
• Javascript
• Imagens
• Dispositivos
• Servidor
• Ferramentas
RTT (Round-Trip Time)
RTT é o tempo que o cliente leva para conversar com o servidor.
Geralmente uma comunicação simples (sem configurações de cache, keep
alive, CDN ou qualquer outra) entre browser e servidor inicia com pelo
menos três RTTs:
1. Resolução do DNS
2. Setup de conexãoTCP
3. Requisição HTTP
Processo de Renderização do Browser
1. Processar a marcação HTML e 

construir a árvore de DOM.
2. Processar a marcação CSS e construir a 

árvore de CSSOM.
3. Combinar o DOM e o CSSOM em uma 

árvore de renderização.
4. Executar o layout na árvore de renderização para 

computar a geometria de cada nó.
5. Pintar cada nó na tela.
http://www.html5rocks.com/pt/tutorials/internals/howbrowserswork/
HTML
Inserção de Javascript e CSS
Evite ao máximo usar estilos e scripts de forma inline ou incorporada, a menos que você esteja
desenvolvendo uma aplicação com pouquíssimos recursos de Javascript e CSS, ou se sua aplicação
for acessada apenas uma única vez. Isso beneficiaria na diminuição de requests, mas aumentaria
consideravelmente o documento HTML.
Ao utilizarmos uma chamada de um arquivo externo temos o benefício do cache, modularização
e reaproveitamento.
Evite
<style></style> e <script></script>;
<p style=“color:#000;”>CSS Inline</p>
<a href=“#” onclick=“funcaoJavascript(‘parametro')”>Javascript Inline</a>
Use
<link rel="stylesheet" href=“style.css”>
<script src="script.js"></script>
HTML
Onde realizar as chamadas externas de CSS?
As chamadas de arquivos CSS devem ser realizadas no início do documento, dentro da tag
head.
…
<head>
<meta charset="UTF-8">
<title>Título</title>
<link rel="stylesheet" href=“style.css”>
</head>
…
Motivos:
- Renderização progressiva da página;
- Evita o fenômeno FOUC (Flash of Unstyled Content);
- Reduza o repaint e reflow inicial;
- Causa ao usuário a "sensação" de que a página está carregando mais rápido.
HTML
Onde realizar as chamadas externas de Javascript?
As chamadas de arquivos Javascript devem ser realizadas no fim do documento, antes
do fechamento tag body.
…
<script src=“script.js”></script>
</body>
</html>
Motivos:
- Evita o bloqueio da renderização da página e o usuário fique travado numa página
em branco enquanto o arquivo de script não for baixado e executado.
E quanto aos atributos async e defer?
Tanto o async e defer apresentam mal funcionamento na versão oito e nove do
Internet Explorer.
CSS
Minifique
A minificação elimina comentários, espaços em branco, quebras de linha, etc, preservando apenas as
regras CSS. Isso diminuir o tamanho em bytes dos arquivos e acelerar o download.
Antes:
.p{
font-family:Arial, sans-serif;
font-size: 14px;
line-height: 20px;
}
Depois:
.p{font-family:Arial,sans-serif;font-size:14px;color:#777;line-height:20px;}
Concatene
A concatenação de arquivos diminui a quantidades de requisições HTTP.
Antes:
<link rel="stylesheet" href=“layout.css”>
<link rel="stylesheet" href=“tipografia.css”>
<link rel="stylesheet" href=“grid.css”>
Depois:
<link rel="stylesheet" href=“main.css”>
CSS
Seletores
Evite utilizar seletores super aninhados:
#menu ul li a{…}
use:
#menu .menu-link{…}
Evite utilizar seletores qualificados:
h1#titulo-pagina{…}
use:
#titulo-pagina{…}
Evite
form[name="signup"] > fieldset > input[type="text"] {…}
use a categoria mais específica possível:
.form-signup .input-text {…}
A interpretação dos
seletores CSS começa da
direita para a esquerda.
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS
CSS
Seletores
Evite utilizar seletor universal:
#elemento *{….}
use algo como:
#elemento h1,
#elemento p,
#elemento li,
#elemento label{…}
Obs.: Atenção ao seletor universal invisível.
body [type=“text”]{…}
body [type="text"] = body *[type="text"]
JAVASCRIPT
Minifique
A minificação elimina comentários, espaços em branco, quebras de linha, etc, preservando
apenas os scripts. Isso diminuir o tamanho dos arquivos em bytes e acelerar o download.
Antes:
var square = function(x){
return x*x;
};
Depois:
var square=function(x){return x*x;};
Concatene
A concatenação de arquivos diminui a quantidades de requisições HTTP.
Antes:
<script src=“modal.js”></script>
<script src=“alert.js”></script>
<script src=“tooltip.js”></script>
Depois:
<script src=“main.js”></script>
JAVASCRIPT
Manipulação de DOM
A manipulação do DOM é algo custoso para o browser, sempre que possível
evite-a ou pense na melhor forma de fazê-la.
Nicholas C. Zacas no livro “Javascript de Alto Desempenho" faz uma analogia
comparando acessar o DOM como a travessia de uma ponte. Ou seja, evite
atravessar várias vezes a ponte.
Evite:
// o dom será acessado 10x
for (var i = 0; i < 10; i++) {
document.getElementById("lista").innerHTML += "<li>" + i + "</li>";
}
Use:
// o dom será acessado 1x
var listaHTML = "";
for (var i = 0; i < 10; i++) {
listaHTML += "<li>" + i + "</li>";
}
document.getElementById("lista").innerHTML = listaHTML;
JAVASCRIPT
Carregue Scripts de terceiros de forma Assíncrona
Scripts de terceiros tais como APIs, botões de like/share/+1, parceiros, web
analytics, etc, podem onerar a aplicação no momento do carregamento caso
o servidor que hospeda o mesmo esteja fora, lento, ou quem sabe
bloqueado por algum serviço de Firewall da empresa que o usuário trabalha.
Exemplo:
<script>
var script = document.createElement('script'),
scripts = document.getElementsByTagName('script')[0];
script.async = true;
script.src = url;
scripts.parentNode.insertBefore(script, scripts);
</script>
JAVASCRIPT
Cuidado com a quantidade de Scripts de Terceiros
Os scripts de terceiros podem realizar requisição de outros scripts, desencadeando um efeito cascata.
JAVASCRIPT
Diminua Repaints e Reflows
A alteração de uma propriedade CSS de um elemento da página
pode desencadeia um processo de re-renderização ocasionando
em repaints e reflows.
Repaint - ocorre quando alteramos a aparência (cor, background,
cor da borda, padding, etc) de um elemento sem necessariamente
ter que recalcular o posicionamento do mesmo na página.
Reflow - ocorre quando a alteração no elemento tem impacto
direto na estrutura do layout (largura, altura, posicionamento, etc).
O reflow tende a ser bem oneroso, pois força o navegador
recalcular a posição dos elementos na página.
JAVASCRIPT
Evite bibliotecas demasiadas pesadas quando for algo simples
Atualmente existem uma gama de bibliotecas, frameworks, plugins, etc que podem auxiliar bastante o desenvolvimento do seu projeto. Porém, é
necessário bom senso em saber quando realmente usá-los, dependendo da ocasião o impacto pode ser negativo na performance.
jQuery
Bibliotecas como o jQuery estão sempre sendo aperfeiçoadas, portanto, procure suar as novas versões.
Zepto
Zepto.js é uma biblioteca minimalista, com larga compatibilidade com a API do jQuery e mais leve. Sua utilização aconselhável quando o objetivo
for simples e podemos ignorar os browsers antigos.
Javascript Nativo
O acesso direto usando Javascript nativo pode ser a melhor opção
quando se deseja fazer coisas como simplesmente acessar um atributo de
um elemento no DOM.
Fonte:
http://jsperf.com/zepto-vs-jquery-2013/38
IMAGENS
Sprites
Unifique suas imagens e use CSS para exibi-ás. Essa técnica diminui o número de requisições
feitas pelo site e consequentemente o tempo de carregamento.
.social-link {
background: url(/assets/sprite-social.png) no-repeat top left;
display: block;
width: 14px;
height: 14px;
}
.social-facebook {
background-xposition: 0 0;
}
.social-instagram {
background-position: 0 -15px;
}
IMAGENS
Icon Fonts
Uma alternativa a técnica de
sprite é usar icon fonts. Essa
técnica consiste em
transformar imagens em svg
em fontes e importá-las no
projeto utilizando
propriedade @font-face do
CSS.
Há vários sites que ajudam
no processo como o http://
icomoon.io/.
A grande vantagem da
técnica é não precisar ter um
sprite com inúmeras
variações de tamanho e cor
de imagens, uma vez que
podemos manipular essas
propriedas direto com CSS.
CSS
@font-face {
font-family: 'icomoon';
src:url('fonts/icomoon.eot?-rn4ypd');
src:url('fonts/icomoon.eot?#iefix-rn4ypd') format('embedded-opentype'),
url('fonts/icomoon.woff?-rn4ypd') format('woff'),
url('fonts/icomoon.ttf?-rn4ypd') format('truetype'),
url('fonts/icomoon.svg?-rn4ypd#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
font-family: 'icomoon';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-facebook:before {
content: "e600";
}
.icon-instagram:before {
content: "e601";
}
HTML
<span class=“icon-facebook"></span>
<span class="icon-instagram"></span>
IMAGENS
Evite Escalar Imagens no HTML
Escalar imagens direto na página não é uma boa prática e pode afetar
consideravelmente a performance da sua aplicação.
Escalando para cima, ou seja aumentando, a imagem perderá qualidade
podendo pixelar.
Escalando para baixo, ou seja diminuindo, será carregada uma imagem
desnecessariamente mais pesada.
É aconselhável setar o tamanho real da imagem, pois isso evitará
reflows. E manter imagens com dimensões diferentes para cada
circunstância.
<img src=“avatar.png” alt=“Avatar" width=“100" height=“100">
<img src=“avatar-mini.png” alt=“Avatar Menor" width=“50"
height="50">
IMAGENS
Otimize suas Imagens
Imagens geralmente possuem informações que são desnecessárias e que
acabam acarretando em bytes a mais no tamanho do arquivo.
É possível eliminar as meta informações sem impactar a qualidade final da
imagem.
Existem uma série de ferramentas para otimização de imagens.
Photoshop
JPEGMini - http://www.jpegmini.com/
Smush It - http://www.smushit.com
PNG Optimizer - http://psydk.org/pngoptimizer
Grunt Imagemin - https://github.com/gruntjs/grunt-contrib-imagemin
DISPOSITIVOS:AWD, RWD OU RESS?
A versão para dispositivos do seu site é algo que deve ser muito bem estudado. Existem alguns caminhos
a seguir que podem implicar consideravelmente na performance, todos eles tem seus prós e contras.
AWD (Adaptive Web Design)
A técnica consiste em identificar o dispositivo e servir conteúdo adaptado e otimizado para tal.
RWD (Responsive Web Design)
A técnica é bem simples de se aplicar, no entanto peca na performance, pois o mesmo conteúdo é
serviço para todos os dispositivos.
RESS (Responsive Web Design + Server Side Components)
É uma técnica híbrida que tende a usar o melhor dos dois mundos. Usa responsive web design com
componentes específicos sendo servidos via server side.
Fonte:
http://visual.ly/adaptive-web-design-vs-responsive-web-design
http://www.smashingmagazine.com/2013/10/08/responsive-website-design-with-ress/
SERVIDOR
Use um Content Delivery Network
Use o CDN para hospedar seus assets (Javascript, CSS, Imagens,Vídeos, etc). Com CDN é possível diminuir o tempo de resposta,
aumentar downloads paralelos e aliviar o servidor da aplicação.Alguns CDNs otimizam o recurso no momento da entrega. Há
vários serviços como o Akamai, CloudFront, CloudFlare, etc.
Compressão GZIP
Todos os navegadores modernos aceitam o método de compressão GZIP. Habilitando o módulo no servidor seus arquivos de texto
(HTML, JS, CSS, XML, JSON) serão comprimidos diminuindo o tráfego de dados e acelerando o downlaod.
# Exemplo no Servidor Apache editando o arquivo .htaccss
AddOutputFilterByType DEFLATE text/htm
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
Cache
O browser por padrão não realiza o cache dos arquivos, isso obriga o usuário fazer requisições desnecessárias. Determine uma data
para armazenamento de cache local dos arquivos.
# Exemplo no Servidor Apache editando o arquivo .htaccss
ExpiresActive On
ExpiresByType image/jpeg "access plus 3 months"
ExpiresByType image/png "access plus 3 months"
ExpiresByType text/css "access plus 3 months"
ExpiresByType application/javascript "access plus 3 months"
ExpiresByType text/javascript "access plus 3 months"
FERRAMENTAS
PageSpeed
O PageSpeed é uma ferramenta do Google que analisa a página dando feedback das possíveis melhorias.
YSLOW
OYSLOW é uma ferramenta do baseada nas regras de performance doYahoo.
Chrome DevTools
O Chrome DevTools é uma ferramenta do Google Chrome. Através da ferramenta é possível analisar o carregamento da página, renderização,
processamento, analisar funções Javascript e performance do CSS.
WebPageTest - www.webpagetest.org
O WebPageTest gera um relatório completo da página analisada. É considerada por alguns como a melhor ferramenta de análise de
desempenho.
JSPerf - jsperf.com
Com JSPerf é possível analisar trechos de código Javascript e efetuar comparações a fim de descobrir qual oferece melhor desempenho.
Site Speed - www.sitespeed.io
É uma ferramenta open source e muito flexível. Possui comunicação com o Graphite para criação de Dashboard. Usa as regras doYSLOW, e
possui integração com o WebPageTest.Você pode escrever suas regras, caso ache necessário, ou integrar com uma ferramenta própria.
Speed Curve - speedcurve.com
Ferramenta criada por Steve Souders e Mark Zeman, baseada no WebPageTest. Realiza benchmark com outros sites, analisa a versão responsiva,
scripts de terceiros, possui continuous deployment, etc. Porém, é uma ferramenta paga.
New Relic
OBRIGADO!
Palestrante
Gustavo Corrêa Alves
http://www.gustavocalves.com.br
https://github.com/gcajpa
http://br.linkedin.com/in/gustavocorreaalves/

Más contenido relacionado

La actualidad más candente

Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
SEO - Otimização de Sites
SEO - Otimização de SitesSEO - Otimização de Sites
SEO - Otimização de SitesRicardo Martins
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Ebook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressEbook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressDaniel Paz
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_webThiago Verly
 
Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressDaniel Paz
 
Dicas para otimizar o WordPress por Felipe Figueiredo
Dicas para otimizar o WordPress por Felipe FigueiredoDicas para otimizar o WordPress por Felipe Figueiredo
Dicas para otimizar o WordPress por Felipe FigueiredoWordCamp Floripa
 
Passo a Passo SEO - Otimização de Sites para Sistemas de Busca
Passo a Passo SEO - Otimização de Sites para Sistemas de BuscaPasso a Passo SEO - Otimização de Sites para Sistemas de Busca
Passo a Passo SEO - Otimização de Sites para Sistemas de BuscaEnlink
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endAnderson Aguiar
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPressWordCamp Floripa
 
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
 
Need for (web) speed - Tchelinux Pelotas 2014
Need for (web) speed - Tchelinux Pelotas 2014Need for (web) speed - Tchelinux Pelotas 2014
Need for (web) speed - Tchelinux Pelotas 2014Jerônimo Medina Madruga
 
Palestra: Otimização de websites
Palestra: Otimização de websitesPalestra: Otimização de websites
Palestra: Otimização de websitesIntrus
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]Rael Max
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPCiro Vargas
 
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOS
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOSGUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOS
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOSWordCamp Floripa
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)Nuno Loureiro
 
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Valério Souza
 

La actualidad más candente (20)

Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
SEO - Otimização de Sites
SEO - Otimização de SitesSEO - Otimização de Sites
SEO - Otimização de Sites
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Ebook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressEbook - Check-list otimização WordPress
Ebook - Check-list otimização WordPress
 
Performance e boas_praticas_de_web
Performance e boas_praticas_de_webPerformance e boas_praticas_de_web
Performance e boas_praticas_de_web
 
Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPress
 
Dicas para otimizar o WordPress por Felipe Figueiredo
Dicas para otimizar o WordPress por Felipe FigueiredoDicas para otimizar o WordPress por Felipe Figueiredo
Dicas para otimizar o WordPress por Felipe Figueiredo
 
Passo a Passo SEO - Otimização de Sites para Sistemas de Busca
Passo a Passo SEO - Otimização de Sites para Sistemas de BuscaPasso a Passo SEO - Otimização de Sites para Sistemas de Busca
Passo a Passo SEO - Otimização de Sites para Sistemas de Busca
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-end
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
 
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
 
Need for (web) speed - Tchelinux Pelotas 2014
Need for (web) speed - Tchelinux Pelotas 2014Need for (web) speed - Tchelinux Pelotas 2014
Need for (web) speed - Tchelinux Pelotas 2014
 
Palestra: Otimização de websites
Palestra: Otimização de websitesPalestra: Otimização de websites
Palestra: Otimização de websites
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
Aceleracao+conteudo+dinamico
Aceleracao+conteudo+dinamicoAceleracao+conteudo+dinamico
Aceleracao+conteudo+dinamico
 
Técnicas de frontend para aplicações django - PythonBrasil[9]
Técnicas de frontend para aplicações django  - PythonBrasil[9]Técnicas de frontend para aplicações django  - PythonBrasil[9]
Técnicas de frontend para aplicações django - PythonBrasil[9]
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHP
 
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOS
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOSGUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOS
GUTENBERG EM PRODUÇÃO: QUALIDADES, DESAFIOS
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)
 
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
Jetpack, um Canivete Suíço no seu WordPress (WordCamp São Paulo 2014)​
 

Destacado

Cuide mais e melhor de você
Cuide mais e melhor de vocêCuide mais e melhor de você
Cuide mais e melhor de vocêguestcf7faa
 
Teste dalai-lama. 17.06.09
Teste dalai-lama. 17.06.09Teste dalai-lama. 17.06.09
Teste dalai-lama. 17.06.09Naigella R,
 
Vagas motorista caminhão
Vagas motorista caminhãoVagas motorista caminhão
Vagas motorista caminhãoMarcela Aguiar
 
JavaScript and Node.js Fundamentals
JavaScript and Node.js FundamentalsJavaScript and Node.js Fundamentals
JavaScript and Node.js FundamentalsJimmy Guerrero
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de SitesCaelum
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
Bebidas AlcoóLicas
Bebidas AlcoóLicasBebidas AlcoóLicas
Bebidas AlcoóLicasEugênia
 
Engenharia de trânsito apresentação
Engenharia de trânsito apresentaçãoEngenharia de trânsito apresentação
Engenharia de trânsito apresentaçãoSonaly Beatriz Frazão
 
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...Natalia Menezes
 
Da família patriarcal às novas concepções de família no mundo contemporâneo
Da família patriarcal às novas concepções de família no mundo contemporâneoDa família patriarcal às novas concepções de família no mundo contemporâneo
Da família patriarcal às novas concepções de família no mundo contemporâneoPortal do Vestibulando
 
Palestra família
Palestra famíliaPalestra família
Palestra famíliapmgv5
 
Tipos de Família
Tipos de Família Tipos de Família
Tipos de Família Cordeiro_
 
Slides palestra família
Slides palestra famíliaSlides palestra família
Slides palestra famíliaClarice-Borges
 
Organizaçao pessoal e gestao de tempo
Organizaçao pessoal e gestao de tempoOrganizaçao pessoal e gestao de tempo
Organizaçao pessoal e gestao de tempoMillor Machado
 

Destacado (20)

Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Cuide mais e melhor de você
Cuide mais e melhor de vocêCuide mais e melhor de você
Cuide mais e melhor de você
 
Teste dalai-lama. 17.06.09
Teste dalai-lama. 17.06.09Teste dalai-lama. 17.06.09
Teste dalai-lama. 17.06.09
 
Vagas motorista caminhão
Vagas motorista caminhãoVagas motorista caminhão
Vagas motorista caminhão
 
JavaScript and Node.js Fundamentals
JavaScript and Node.js FundamentalsJavaScript and Node.js Fundamentals
JavaScript and Node.js Fundamentals
 
Node js
Node jsNode js
Node js
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Bebidas AlcoóLicas
Bebidas AlcoóLicasBebidas AlcoóLicas
Bebidas AlcoóLicas
 
Engenharia de trânsito apresentação
Engenharia de trânsito apresentaçãoEngenharia de trânsito apresentação
Engenharia de trânsito apresentação
 
Bebidas alcoólicas
Bebidas alcoólicasBebidas alcoólicas
Bebidas alcoólicas
 
Gestao do Tempo
Gestao do TempoGestao do Tempo
Gestao do Tempo
 
Projeto de vida 2014
Projeto de vida   2014Projeto de vida   2014
Projeto de vida 2014
 
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...
Gestão do Tempo - Como manter o trabalho sob controle e minimizar o estresse ...
 
Da família patriarcal às novas concepções de família no mundo contemporâneo
Da família patriarcal às novas concepções de família no mundo contemporâneoDa família patriarcal às novas concepções de família no mundo contemporâneo
Da família patriarcal às novas concepções de família no mundo contemporâneo
 
Palestra família
Palestra famíliaPalestra família
Palestra família
 
Tipos de Família
Tipos de Família Tipos de Família
Tipos de Família
 
Slides palestra família
Slides palestra famíliaSlides palestra família
Slides palestra família
 
Organizaçao pessoal e gestao de tempo
Organizaçao pessoal e gestao de tempoOrganizaçao pessoal e gestao de tempo
Organizaçao pessoal e gestao de tempo
 
Crimes de trânsito
Crimes de trânsitoCrimes de trânsito
Crimes de trânsito
 

Similar a Acelere seu site

Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Otimização de Performance Web
Otimização de Performance WebOtimização de Performance Web
Otimização de Performance WebPaolo Almeida
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPressGuga Alves
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Trabalho jQuery
Trabalho jQueryTrabalho jQuery
Trabalho jQuerygrupoucpel
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMarcelo Linhares
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-endertdc-globalcode
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Rodrigo Kono
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu siteHenrique Lima
 
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
 
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO –  A PEÇA CHAVE DO QUEBRA-CABEÇASEO –  A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇALeonardo Ferreira
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Sérgio Vilar
 

Similar a Acelere seu site (20)

Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Otimização de Performance Web
Otimização de Performance WebOtimização de Performance Web
Otimização de Performance Web
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Trabalho jQuery
Trabalho jQueryTrabalho jQuery
Trabalho jQuery
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-ender
 
Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3Surpreenda-se com o Silverlight 3
Surpreenda-se com o Silverlight 3
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)
 
Html5
Html5Html5
Html5
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
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
 
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO –  A PEÇA CHAVE DO QUEBRA-CABEÇASEO –  A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)Estrutura de um Front-End eficiente (para iniciantes)
Estrutura de um Front-End eficiente (para iniciantes)
 

Acelere seu site

  • 1. PERFORMANCE Acelere seu site! Na web tempo é mais que dinheiro.
  • 2. Fontes: http://www.strangeloopnetworks.com/assets/images/visualizing_web_performance_poster.jpg http://www.webperformancetoday.com/2012/02/28/4-awesome-slides-showing-how-page-speed-correlates-to-business-metrics-at-walmart-com/ Amazon’s revenue increased 1% per 100ms of reduced loading time Every 1second reduction in loading time correlated to a 2% increase in web traffic. Every 100ms of reduced loading time lead to an increase in incremental revenue of as much as 1%. After Mozilla made their page 2.2 seconds quicker to load, the company saw downloads of Firefox increase by 5 million per month. For every 400ms’ reduction in loading time,Yahoo’s traffic increased by 9% Adopting a single optimization, gzip compression, resulted in a 13-25% speedup and cut their outbound network traffic by 50%.
  • 3. No que diz respeito a performance no client-side, se uníssemos… + + teríamos ninguém menos que… = Steve Souders Ex Head Performance Engineer na Google, Chief Performance Yahoo! e Chief Performance Officer na Fastly. Autor de livros e artigos sobre o assunto e criador de ferramentas que auxiliam a melhora de performance
  • 4. No post "the Performance Golden Rule” Steve diz que: 80-90% of the end-user response time is spent on the front-end. Fonte: http://www.stevesouders.com/blog/2012/02/10/the- performance-golden-rule/
  • 5. SUMÁRIO • HTML • CSS • Javascript • Imagens • Dispositivos • Servidor • Ferramentas
  • 6.
  • 7. RTT (Round-Trip Time) RTT é o tempo que o cliente leva para conversar com o servidor. Geralmente uma comunicação simples (sem configurações de cache, keep alive, CDN ou qualquer outra) entre browser e servidor inicia com pelo menos três RTTs: 1. Resolução do DNS 2. Setup de conexãoTCP 3. Requisição HTTP Processo de Renderização do Browser 1. Processar a marcação HTML e 
 construir a árvore de DOM. 2. Processar a marcação CSS e construir a 
 árvore de CSSOM. 3. Combinar o DOM e o CSSOM em uma 
 árvore de renderização. 4. Executar o layout na árvore de renderização para 
 computar a geometria de cada nó. 5. Pintar cada nó na tela. http://www.html5rocks.com/pt/tutorials/internals/howbrowserswork/
  • 8. HTML Inserção de Javascript e CSS Evite ao máximo usar estilos e scripts de forma inline ou incorporada, a menos que você esteja desenvolvendo uma aplicação com pouquíssimos recursos de Javascript e CSS, ou se sua aplicação for acessada apenas uma única vez. Isso beneficiaria na diminuição de requests, mas aumentaria consideravelmente o documento HTML. Ao utilizarmos uma chamada de um arquivo externo temos o benefício do cache, modularização e reaproveitamento. Evite <style></style> e <script></script>; <p style=“color:#000;”>CSS Inline</p> <a href=“#” onclick=“funcaoJavascript(‘parametro')”>Javascript Inline</a> Use <link rel="stylesheet" href=“style.css”> <script src="script.js"></script>
  • 9. HTML Onde realizar as chamadas externas de CSS? As chamadas de arquivos CSS devem ser realizadas no início do documento, dentro da tag head. … <head> <meta charset="UTF-8"> <title>Título</title> <link rel="stylesheet" href=“style.css”> </head> … Motivos: - Renderização progressiva da página; - Evita o fenômeno FOUC (Flash of Unstyled Content); - Reduza o repaint e reflow inicial; - Causa ao usuário a "sensação" de que a página está carregando mais rápido.
  • 10. HTML Onde realizar as chamadas externas de Javascript? As chamadas de arquivos Javascript devem ser realizadas no fim do documento, antes do fechamento tag body. … <script src=“script.js”></script> </body> </html> Motivos: - Evita o bloqueio da renderização da página e o usuário fique travado numa página em branco enquanto o arquivo de script não for baixado e executado. E quanto aos atributos async e defer? Tanto o async e defer apresentam mal funcionamento na versão oito e nove do Internet Explorer.
  • 11. CSS Minifique A minificação elimina comentários, espaços em branco, quebras de linha, etc, preservando apenas as regras CSS. Isso diminuir o tamanho em bytes dos arquivos e acelerar o download. Antes: .p{ font-family:Arial, sans-serif; font-size: 14px; line-height: 20px; } Depois: .p{font-family:Arial,sans-serif;font-size:14px;color:#777;line-height:20px;} Concatene A concatenação de arquivos diminui a quantidades de requisições HTTP. Antes: <link rel="stylesheet" href=“layout.css”> <link rel="stylesheet" href=“tipografia.css”> <link rel="stylesheet" href=“grid.css”> Depois: <link rel="stylesheet" href=“main.css”>
  • 12. CSS Seletores Evite utilizar seletores super aninhados: #menu ul li a{…} use: #menu .menu-link{…} Evite utilizar seletores qualificados: h1#titulo-pagina{…} use: #titulo-pagina{…} Evite form[name="signup"] > fieldset > input[type="text"] {…} use a categoria mais específica possível: .form-signup .input-text {…} A interpretação dos seletores CSS começa da direita para a esquerda. https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS
  • 13. CSS Seletores Evite utilizar seletor universal: #elemento *{….} use algo como: #elemento h1, #elemento p, #elemento li, #elemento label{…} Obs.: Atenção ao seletor universal invisível. body [type=“text”]{…} body [type="text"] = body *[type="text"]
  • 14. JAVASCRIPT Minifique A minificação elimina comentários, espaços em branco, quebras de linha, etc, preservando apenas os scripts. Isso diminuir o tamanho dos arquivos em bytes e acelerar o download. Antes: var square = function(x){ return x*x; }; Depois: var square=function(x){return x*x;}; Concatene A concatenação de arquivos diminui a quantidades de requisições HTTP. Antes: <script src=“modal.js”></script> <script src=“alert.js”></script> <script src=“tooltip.js”></script> Depois: <script src=“main.js”></script>
  • 15. JAVASCRIPT Manipulação de DOM A manipulação do DOM é algo custoso para o browser, sempre que possível evite-a ou pense na melhor forma de fazê-la. Nicholas C. Zacas no livro “Javascript de Alto Desempenho" faz uma analogia comparando acessar o DOM como a travessia de uma ponte. Ou seja, evite atravessar várias vezes a ponte. Evite: // o dom será acessado 10x for (var i = 0; i < 10; i++) { document.getElementById("lista").innerHTML += "<li>" + i + "</li>"; } Use: // o dom será acessado 1x var listaHTML = ""; for (var i = 0; i < 10; i++) { listaHTML += "<li>" + i + "</li>"; } document.getElementById("lista").innerHTML = listaHTML;
  • 16. JAVASCRIPT Carregue Scripts de terceiros de forma Assíncrona Scripts de terceiros tais como APIs, botões de like/share/+1, parceiros, web analytics, etc, podem onerar a aplicação no momento do carregamento caso o servidor que hospeda o mesmo esteja fora, lento, ou quem sabe bloqueado por algum serviço de Firewall da empresa que o usuário trabalha. Exemplo: <script> var script = document.createElement('script'), scripts = document.getElementsByTagName('script')[0]; script.async = true; script.src = url; scripts.parentNode.insertBefore(script, scripts); </script>
  • 17. JAVASCRIPT Cuidado com a quantidade de Scripts de Terceiros Os scripts de terceiros podem realizar requisição de outros scripts, desencadeando um efeito cascata.
  • 18. JAVASCRIPT Diminua Repaints e Reflows A alteração de uma propriedade CSS de um elemento da página pode desencadeia um processo de re-renderização ocasionando em repaints e reflows. Repaint - ocorre quando alteramos a aparência (cor, background, cor da borda, padding, etc) de um elemento sem necessariamente ter que recalcular o posicionamento do mesmo na página. Reflow - ocorre quando a alteração no elemento tem impacto direto na estrutura do layout (largura, altura, posicionamento, etc). O reflow tende a ser bem oneroso, pois força o navegador recalcular a posição dos elementos na página.
  • 19. JAVASCRIPT Evite bibliotecas demasiadas pesadas quando for algo simples Atualmente existem uma gama de bibliotecas, frameworks, plugins, etc que podem auxiliar bastante o desenvolvimento do seu projeto. Porém, é necessário bom senso em saber quando realmente usá-los, dependendo da ocasião o impacto pode ser negativo na performance. jQuery Bibliotecas como o jQuery estão sempre sendo aperfeiçoadas, portanto, procure suar as novas versões. Zepto Zepto.js é uma biblioteca minimalista, com larga compatibilidade com a API do jQuery e mais leve. Sua utilização aconselhável quando o objetivo for simples e podemos ignorar os browsers antigos. Javascript Nativo O acesso direto usando Javascript nativo pode ser a melhor opção quando se deseja fazer coisas como simplesmente acessar um atributo de um elemento no DOM. Fonte: http://jsperf.com/zepto-vs-jquery-2013/38
  • 20. IMAGENS Sprites Unifique suas imagens e use CSS para exibi-ás. Essa técnica diminui o número de requisições feitas pelo site e consequentemente o tempo de carregamento. .social-link { background: url(/assets/sprite-social.png) no-repeat top left; display: block; width: 14px; height: 14px; } .social-facebook { background-xposition: 0 0; } .social-instagram { background-position: 0 -15px; }
  • 21. IMAGENS Icon Fonts Uma alternativa a técnica de sprite é usar icon fonts. Essa técnica consiste em transformar imagens em svg em fontes e importá-las no projeto utilizando propriedade @font-face do CSS. Há vários sites que ajudam no processo como o http:// icomoon.io/. A grande vantagem da técnica é não precisar ter um sprite com inúmeras variações de tamanho e cor de imagens, uma vez que podemos manipular essas propriedas direto com CSS. CSS @font-face { font-family: 'icomoon'; src:url('fonts/icomoon.eot?-rn4ypd'); src:url('fonts/icomoon.eot?#iefix-rn4ypd') format('embedded-opentype'), url('fonts/icomoon.woff?-rn4ypd') format('woff'), url('fonts/icomoon.ttf?-rn4ypd') format('truetype'), url('fonts/icomoon.svg?-rn4ypd#icomoon') format('svg'); font-weight: normal; font-style: normal; } [class^="icon-"], [class*=" icon-"] { font-family: 'icomoon'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-facebook:before { content: "e600"; } .icon-instagram:before { content: "e601"; } HTML <span class=“icon-facebook"></span> <span class="icon-instagram"></span>
  • 22. IMAGENS Evite Escalar Imagens no HTML Escalar imagens direto na página não é uma boa prática e pode afetar consideravelmente a performance da sua aplicação. Escalando para cima, ou seja aumentando, a imagem perderá qualidade podendo pixelar. Escalando para baixo, ou seja diminuindo, será carregada uma imagem desnecessariamente mais pesada. É aconselhável setar o tamanho real da imagem, pois isso evitará reflows. E manter imagens com dimensões diferentes para cada circunstância. <img src=“avatar.png” alt=“Avatar" width=“100" height=“100"> <img src=“avatar-mini.png” alt=“Avatar Menor" width=“50" height="50">
  • 23. IMAGENS Otimize suas Imagens Imagens geralmente possuem informações que são desnecessárias e que acabam acarretando em bytes a mais no tamanho do arquivo. É possível eliminar as meta informações sem impactar a qualidade final da imagem. Existem uma série de ferramentas para otimização de imagens. Photoshop JPEGMini - http://www.jpegmini.com/ Smush It - http://www.smushit.com PNG Optimizer - http://psydk.org/pngoptimizer Grunt Imagemin - https://github.com/gruntjs/grunt-contrib-imagemin
  • 24. DISPOSITIVOS:AWD, RWD OU RESS? A versão para dispositivos do seu site é algo que deve ser muito bem estudado. Existem alguns caminhos a seguir que podem implicar consideravelmente na performance, todos eles tem seus prós e contras. AWD (Adaptive Web Design) A técnica consiste em identificar o dispositivo e servir conteúdo adaptado e otimizado para tal. RWD (Responsive Web Design) A técnica é bem simples de se aplicar, no entanto peca na performance, pois o mesmo conteúdo é serviço para todos os dispositivos. RESS (Responsive Web Design + Server Side Components) É uma técnica híbrida que tende a usar o melhor dos dois mundos. Usa responsive web design com componentes específicos sendo servidos via server side. Fonte: http://visual.ly/adaptive-web-design-vs-responsive-web-design http://www.smashingmagazine.com/2013/10/08/responsive-website-design-with-ress/
  • 25. SERVIDOR Use um Content Delivery Network Use o CDN para hospedar seus assets (Javascript, CSS, Imagens,Vídeos, etc). Com CDN é possível diminuir o tempo de resposta, aumentar downloads paralelos e aliviar o servidor da aplicação.Alguns CDNs otimizam o recurso no momento da entrega. Há vários serviços como o Akamai, CloudFront, CloudFlare, etc. Compressão GZIP Todos os navegadores modernos aceitam o método de compressão GZIP. Habilitando o módulo no servidor seus arquivos de texto (HTML, JS, CSS, XML, JSON) serão comprimidos diminuindo o tráfego de dados e acelerando o downlaod. # Exemplo no Servidor Apache editando o arquivo .htaccss AddOutputFilterByType DEFLATE text/htm AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/javascript Cache O browser por padrão não realiza o cache dos arquivos, isso obriga o usuário fazer requisições desnecessárias. Determine uma data para armazenamento de cache local dos arquivos. # Exemplo no Servidor Apache editando o arquivo .htaccss ExpiresActive On ExpiresByType image/jpeg "access plus 3 months" ExpiresByType image/png "access plus 3 months" ExpiresByType text/css "access plus 3 months" ExpiresByType application/javascript "access plus 3 months" ExpiresByType text/javascript "access plus 3 months"
  • 26. FERRAMENTAS PageSpeed O PageSpeed é uma ferramenta do Google que analisa a página dando feedback das possíveis melhorias. YSLOW OYSLOW é uma ferramenta do baseada nas regras de performance doYahoo. Chrome DevTools O Chrome DevTools é uma ferramenta do Google Chrome. Através da ferramenta é possível analisar o carregamento da página, renderização, processamento, analisar funções Javascript e performance do CSS. WebPageTest - www.webpagetest.org O WebPageTest gera um relatório completo da página analisada. É considerada por alguns como a melhor ferramenta de análise de desempenho. JSPerf - jsperf.com Com JSPerf é possível analisar trechos de código Javascript e efetuar comparações a fim de descobrir qual oferece melhor desempenho. Site Speed - www.sitespeed.io É uma ferramenta open source e muito flexível. Possui comunicação com o Graphite para criação de Dashboard. Usa as regras doYSLOW, e possui integração com o WebPageTest.Você pode escrever suas regras, caso ache necessário, ou integrar com uma ferramenta própria. Speed Curve - speedcurve.com Ferramenta criada por Steve Souders e Mark Zeman, baseada no WebPageTest. Realiza benchmark com outros sites, analisa a versão responsiva, scripts de terceiros, possui continuous deployment, etc. Porém, é uma ferramenta paga. New Relic