Top Banner
Aumente a performance de seu site de maneira disciplinada
55

Aumente a performance de seu site de maneira disciplinada

Jun 06, 2015

Download

Technology

Henrique Lima

Palestra sobre performance e web, efetuada no coalti em Maceió. Dia 28/10/2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aumente a performance de seu site de maneira disciplinada

Aumente a performancede seu site

de maneira disciplinada

Page 2: Aumente a performance de seu site de maneira disciplinada

Henrique Lima

• 10 anos de experiência com desenvolvimento • Cetelem (financeira francesa)

 • TIM (Telecom)

 • SaveMe (Agregador de compras coletivas)

 • MoIP (Facilitador de Pagamentos)

Page 3: Aumente a performance de seu site de maneira disciplinada

Contatos

[email protected] http://www.facebook.com/hgflima @henrique_lim4 

Page 4: Aumente a performance de seu site de maneira disciplinada

Porque aumentar a performance do meu site?

"People do not like to wait. Do not make them." 1

Marissa Mayer, Vice-presidente do Google

Page 5: Aumente a performance de seu site de maneira disciplinada

Porque aumentar a performance do meu site?

Aumentar a conversão2

Page 6: Aumente a performance de seu site de maneira disciplinada

Pesquisas e Números

Page 7: Aumente a performance de seu site de maneira disciplinada

Pesquisas e números

"Em 2006, compradores on-line esperavam que uma página web carregasse em até 4 segundos. Hoje, esse mesmo cliente espera que esta página carregue em 2 segundos ou menos."

fonte: Forrester Consulting

Os consumidores estão mais exigentes

Page 8: Aumente a performance de seu site de maneira disciplinada

Pesquisas e números

"Carregamento rápido de uma página web é a segunda coisa mais importante para o cliente, perdendo apenas para a segurança"

fonte: Web Performance Today

Os consumidores querem velocidade

Page 9: Aumente a performance de seu site de maneira disciplinada

Pesquisas e números

E-commerce no Brasil

"... cada segundo gasto na abertura de uma página pode representar 5% a menos de conversão"

Igor Senra, CEO do MoIP

Page 10: Aumente a performance de seu site de maneira disciplinada

Pesquisas e números

Amazon

"Amazon descobriu que aumentou sua receita em 1% a cada 100 milisegundos ganho em performance"

fonte: Amazon

Page 11: Aumente a performance de seu site de maneira disciplinada

Pesquisas e números

Google

"O Google aumentou o número de resultados de suas pesquisas de 10 (a 0.4s) para 30 (a 0.9s), o trafégo caiu 20%"

Marissa Mayer, VP do Google

Page 12: Aumente a performance de seu site de maneira disciplinada

Oportunidade

Page 13: Aumente a performance de seu site de maneira disciplinada

Salvador da Pátria

Page 14: Aumente a performance de seu site de maneira disciplinada

O Pica das Galáxias

Page 15: Aumente a performance de seu site de maneira disciplinada

Dinheiro!!!!!!!!!!

Page 16: Aumente a performance de seu site de maneira disciplinada

Apache HTTP Server

• Web server mais utilizado no mundo • Usado por 60% dos sites no mundo

 • Suporte a todos os Sistemas Operacionais

 • Estável

 • Centenas de módulos disponíveis

 • Open Source

Page 17: Aumente a performance de seu site de maneira disciplinada

Apache HTTP Server

O que Você TEM que saber sobre o apache Memória é:

•O recurso mais importante •Quem determina a capacidade de atender mais ou menos requisições simultaneamente

•CPU, disco e placa de rede

Page 18: Aumente a performance de seu site de maneira disciplinada

Apache HTTP Server

• A configuração correta pode fazer diferença na(o): 

o Performance 

o Escalabilidade 

o Consumo de memória 

o Consumo de CPU

Page 19: Aumente a performance de seu site de maneira disciplinada

Problema

• Como faço para mensurar quantos processos eu consigo manipular simultaneamente?

Page 20: Aumente a performance de seu site de maneira disciplinada

Configuração - Prefork

No arquivo httpd.conf  <IfModule prefork.c>    StartServers                  10    MinSpareServers          10    MaxSpareServers         25    ServerLimit                   350    MaxClients                   350    MaxRequestsPerChild  5</IfModule>

Page 21: Aumente a performance de seu site de maneira disciplinada

Configuração - Prefork (Dica)

MaxClients (esse é o segredo!)

• Identifique o tamanho médio dos seus processos apache, Por exemplo: 7800 kb

 • Identifique o tanto de memória RAM disponível sem o

apache rodando(deixe uns 20% sobrando), Por exemplo: 2GB (2097152 kb)

2097152 / 7800 = 268 processos

Page 22: Aumente a performance de seu site de maneira disciplinada

Caso não seja suficiente

• Aumente a memória e calcule novamente

• Adicione uma outra máquina e faça load balance (mais complexo)

Page 23: Aumente a performance de seu site de maneira disciplinada

Aspectos básicos de um browser

Page 24: Aumente a performance de seu site de maneira disciplinada

Cada arquivo é uma requisição

<html>     <head>        <script type="text/javascript" src="meu.js">         <link rel="stylesheet" type="text/css" href="meu.css">     </head>    <body>        <img src="img.jpg">    </body></html>

Page 25: Aumente a performance de seu site de maneira disciplinada

Isso significa que ...

• 80 a 90% do tempo de carregamento de uma página é destinado ao download de arquivos (2007, Steve Sonders)

 • Um servidor que suporta 350 conexões

 • Servindo uma página com 50 arquivos 

 • Suporta no máximo 7 acessos simultâneos*

Page 26: Aumente a performance de seu site de maneira disciplinada

Download concorrente de arquivos

Quantos arquivos um browser efetua download simultaneamente em um mesmo host? • IE6 - 2 a 6 arquivos 

 • Opera - de 6 a 8 arquivos

 • Firefox 6 - de 6 a 14 arquivos

 • Chrome 14 - de 6 a 14 arquivos

fonte: browserscope

Page 27: Aumente a performance de seu site de maneira disciplinada

isso significa que ...

• Podem existir "poucas" threads para carregar os arquivos • Arquivos muito grandes, ocupam threads que poderiam

estar carregando outros arquivos  

Page 28: Aumente a performance de seu site de maneira disciplinada

Tamanho é documento

• Boa parte dos arquivos são texto • Espaço em branco também é byte

 • Imagens podem diminuir de tamanho 

Page 29: Aumente a performance de seu site de maneira disciplinada

Solução

• Reduzir o número de requests

• Diminuir o tamanho dos arquivos  •  Aumentar a capacidade de downloads simultâneos dos

browsers (mais arquivos sendo baixados ao mesmo tempo) 

Page 30: Aumente a performance de seu site de maneira disciplinada

Reduza o número de requests

Page 31: Aumente a performance de seu site de maneira disciplinada

Header Fields

Protocolo HTTP 1.1

Page 32: Aumente a performance de seu site de maneira disciplinada

Requisição Browser x Servidor

GET /logo.png HTTP/1.1

Header FieldsAccept-Encoding: gzipAccept-Language: de,en…

Page 33: Aumente a performance de seu site de maneira disciplinada

Resposta Servidor x Browser

Header FieldsContent-Length: 4882Content-Encoding: gzip…

Status: HTTP/1.1 200 OK

Page 34: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "Expires"

• Expires: Wed, 26 Oct 2011 22:13:20 GMT

• Indica a data de expiração desse arquivo no browser

• Quanto tempo o browser irá ficar sem perguntar por este arquivo ao servidor

• Somente em arquivos estáticos

• Mínimo 1 mês

• Máximo 1 ano

Page 35: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "Expires"

No Arquivo httpd.conf  Certifique-se de ter carregado o mod_expires  LoadModule expires_module modules/mod_expires.so

Habilite o Expires

ExpiresActive OnExpiresByType image/gif A2592000

A - A partir do primeiro acesso 2592000 - Cachear este arquivo por um mês (em segundos)

Page 36: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "Expires"

• Para testar 

o Entre no site www.web-sniffer.net 

o Preencha o campo url com o endereço de uma imagem em seu servidor  

 o No resultado, HTTP Response Header deve aparecer

algo parecido com:  

Expires: Wed, 26 Oct 2011 22:13:20 GMT

Page 37: Aumente a performance de seu site de maneira disciplinada

Utilize CSS Sprites

• Um mapeador de imagem via CSS • Todas as imagens em um arquivo só (ou quase)

 • Exemplo com SpriteMe

Page 38: Aumente a performance de seu site de maneira disciplinada

Diminua o tamanho dos arquivos

Page 39: Aumente a performance de seu site de maneira disciplinada

Habilite GZip

• Para que serve Trafegar dados compactados usando como filtro o content-type

Page 40: Aumente a performance de seu site de maneira disciplinada

Habilite GZip

No arquivo httpd.conf Certifique-se de ter carregado o mod_deflate LoadModule deflate_module modules/mod_deflate.so Habilite o GZip  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript  application/javascript application/x-javascript (demais content-type's) 

Page 41: Aumente a performance de seu site de maneira disciplinada

Habilite GZip

• Para testar 

o Entre no site www.web-sniffer.net 

o Preencha o campo url com o endereço de um javascript em seu servidor  

 o No resultado, HTTP Response Header deve aparecer

algo parecido com:  

Content-Encoding: gzip

Page 42: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "ETag"

• Para que serve Diminui o tamanho do request  O Browser faz o cache do recurso estático e guarda seu ETag (aa-41a2d4c0, por exemplo)

Quando for efetuar o request novamente envia no header field If-None-Match: aa-41a2d4c0 Se o ETag não foi modificado o browser retorna "HTTP 304 Not Modified Status" (request curto)  

Page 43: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "ETag"

No arquivo httpd.conf

Habilite o ETag

FileTag MTime Size

Page 44: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "ETag"

• Formato padrão é: FileTag Inode MTime Size • O formato padrão não é aconselhado para sistemas com

recursos estáticos distribuidos (Inode se refere a máquina) 

Page 45: Aumente a performance de seu site de maneira disciplinada

Habilite o Header Field "ETag"

• Para testar 

o Entre no site www.web-sniffer.net 

o Preencha o campo url com o endereço de uma imagem em seu servidor  

 o No resultado, HTTP Response Header deve aparecer

algo parecido com:  

ETag: aa-41a2d4c0

Page 46: Aumente a performance de seu site de maneira disciplinada

Aumente downloads simultâneos

• Sabemos que downloads acontecem simultaneamente • A limitação dos downloads é baseado no hostname

 • Distribuir arquivos entre hostnames diferentes implica em

aumentar o número de downloads simultâneos (dobra a cada novo domínio adicionado)

 • Você pode criar um sub-domínio na mesma máquina do

domínio principal

Page 47: Aumente a performance de seu site de maneira disciplinada

Aumente downloads simultâneos

<html>     ...      <body>        <img src="http://img1.moip.com.br/imagem.jpg">        <img src="http://img2.moip.com.br/imagem.jpg">        <img src="http://img3.moip.com.br/imagem.jpg">     </body></html>

Page 48: Aumente a performance de seu site de maneira disciplinada

Limitações

• Aumenta o consumo de CPU no cliente • Dependendo do número de domínios pode diminuir a

performance • Geralmente um domínio adicional já pode ser o suficiente

Page 49: Aumente a performance de seu site de maneira disciplinada

mod_pagespeed

• Google way of life • Módulo do apache

 • Baseado em filtros

 • Otimiza HTML, Javascript, CSS, Imagens

 • Melhora o cache

Page 50: Aumente a performance de seu site de maneira disciplinada

mod_pagespeed

• Principais filtros 

o CSS combine - Junta todos os CSS em um só 

o Inline CSS - Adiciona arquivos CSS pequenos ao próprio HTML

 o Inline JS - A mesma coisa que o Inline CSS

 o Minify JS - Reduz o tamanho do Javascript

 o Remove Comments - Retira os comentários 

Page 51: Aumente a performance de seu site de maneira disciplinada

mod_pagespeed

• Principais filtros 

o Rewrite CSS - Retira os espaços e diminui o valor das cores

  o Optimize Images - Diminui o tamanho das imagens

(resize, re-compress, strip metadata) 

o Move CSS to Head - Move todos os CSS's externos para o <head />

 

Page 52: Aumente a performance de seu site de maneira disciplinada

Considerações finais

• Organize suas mudanças • Priorize mudanças com maior ganho e menor esforço

 • Meça sua página antes, efetue a mudança e meça

novamente (para poder calcular o ganho) • Otimize continuamente sua aplicação

Page 53: Aumente a performance de seu site de maneira disciplinada

LinksMoIP Labshttp://labs.moip.com.br

YSlowhttp://developer.yahoo.com/yslow/

Page Speedhttp://code.google.com/intl/pt-BR/speed/page-speed/

Web Performance Todayhttp://www.webperformancetoday.com/

Web Performance Optimizationhttp://www.websiteoptimization.com/

Page 54: Aumente a performance de seu site de maneira disciplinada

Perguntas?

Page 55: Aumente a performance de seu site de maneira disciplinada

Obrigado