performance front-end

44
PERFORMANCE FRONT-END Beaga JS - 02/03/2013

Upload: descomplica

Post on 07-Jul-2015

1.123 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Performance Front-end

PERFORMANCE FRONT-END

Beaga JS - 02/03/2013

Page 2: Performance Front-end

GIOVANNI KEPPELEN FRONT-END/COORDENADOR - MOBICARE

http://github.com/keppelen/talks

Page 7: Performance Front-end

+20 Milhões usuários+22 Milhões acessos por mês+75 Milhões pageviews mês

Page 8: Performance Front-end

“1 - FIRST AND FOREMOST, WE BELIEVE THAT SPEED IS MORE

THAN A FEATURE. SPEED IS THE MOST IMPORTANT FEATURE.”

Fred Wilson

http://www.businessinsider.com/10-golden-principles-successful-web-apps-2010-3

Page 9: Performance Front-end
Page 10: Performance Front-end
Page 11: Performance Front-end

E AI? COMO FAZER MEUS USUÁRIOS FICAREM ASSIM?

Page 12: Performance Front-end

COMO ERA?ERA TRISTE MESMO.

* Load página em 9.5s* Vários e vários padrões* Pouca documentação (quase nenhuma)

* Código redundante* Crescimento muito acelerado* Novos Serviços

Page 13: Performance Front-end

PRECISAMOS FAZER ALGO!!!

MAS O QUE É MAIS IMPORTANTE?

Page 14: Performance Front-end

OTIMIZAR

DEFINIR PADRÕES

REUTILIZAR

DOCUMENTAR

AGILIZAR

Page 15: Performance Front-end
Page 16: Performance Front-end

OTIMIZAR

DEFINIR PADRÕES

REUTILIZAR

DOCUMENTAR

AGILIZAR

Page 17: Performance Front-end

O QUE CONSEGUIMOS COM ISSO?

Page 18: Performance Front-end

* Aumento de 70% na criação de novas páginas e manutenção do código* Com isso temos mais tempo para criar coisas novas.

O QUE CONSEGUIMOS COM ISSO?

Page 19: Performance Front-end

TANTAS REGRAS O QUE FAZER?

Habilite GZIP

Minifique Javascript

Minifique CSS

Comprima HTML

Não redimensione imagens no HTML

Otimize as imagens

Pense no formato das imagens

Diminua Cookies e headers

Junte arquivos Javascript

Junte arquivos CSS

Use Sprites

Coloque o Javascript no fim

Coloque o CSS no topo

Adie o carregamento do que puder

Otimize o First-View

Use ferramentas de diagnóstico

Page 20: Performance Front-end

ANALISANDO A APLICAÇÃOConcluimos que fazer os seguintes tópicos traria resultado, e

seria de grande importância.

1- Servir sempre o conteúdo estático, sem ir ao banco toda vez que um “usuário” entrasse ou desse F5 na página.

2 - Minificar e juntar arquivos CSS/JS

3 - Diminuir requests (img)

Page 21: Performance Front-end

1 - SERVIR CONTEÚDO ESTÁTICOTecnologia usada NGINX

Page 22: Performance Front-end

1 - SERVIR CONTEÚDO ESTÁTICO

* Isso era o “pecado” de nossa aplicação.

* Era necessário 20 a 45 servidores para dar conta dos acessos.

* Load da página em 8s a 10s. Inaceitável :-)

Page 23: Performance Front-end

1 - SERVIR CONTEÚDO ESTÁTICO

O que ganhamos com isso?

* Diminuimos requisições ao banco, agora ao invés de ir no banco toda hora que o usuário entra no site, vamos apenas de

5 em 5min, pois alguma coisa na oferta pode ter mudado.

* Dimuimos de 20/45 para apenas 5/10 servidores.

* Load da página em 6 - 7s, pois agora isso já está no cache, só precisamos chamar arquivos estáticos.

Page 24: Performance Front-end

2 - ARQUIVOS ESTÁTICOS

Page 25: Performance Front-end

2 - ARQUIVOS ESTÁTICOS

Nossa aplicação tinha mais de 4 arquivos JS na página para ser executado. Na maioria das vezes, eram chamados arquivos que

não estavam sendo utilizados.

Page 26: Performance Front-end

2 - ARQUIVOS ESTÁTICOS

SquishIt

REQUESTS CSS/JS

MAS..... PORQUE....

REQUESTS CSS/JS

Page 27: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS CSS/JS

YUI Compressor

Compiler (Google)

UglifyJS LESS Compiler

Page 28: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS CSS/JS

FÁCIL, ÁGIL, FÁCIL INSTALAÇÃO, FUNCIONA PERFEITAMENTE

REQUESTS CSS/JS

Page 29: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Page 30: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Problema!!!

Problema!!!

Problema!!!

Page 31: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Mas porque??

Page 32: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

* O carregamento das imagens era o que mais tinha problemas, pois eram publicada mais de 90 ofertas por dia.

* Como resolver isso de forma rápida e prática?

* Não podemos reescrever “back-end” para isso.

Page 33: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Lazy LoadSOLUÇÃO RÁPIDA, E PARA NOSSA APLICAÇÃO SERVIU MUITO BEM

Page 34: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Lazy Load é um plugin jQuery. Ele atrasa o carregamento das imagens. Imagens fora da viewport não será carregado antes

que o usuário role a página. Isto é o oposto do pré-carregamento de imagem.

Com isso o browser depois da rolagem so tera que carregar as imagnes que estiver na viewport. O que ganhamos isso? Reduzir

a carga no servidor.

Page 35: Performance Front-end

2 - ARQUIVOS ESTÁTICOSREQUESTS IMAGENS

Demo

Page 36: Performance Front-end

O QUE CONSEGUIMOS COM ISSO?

* First View para 4s - Second View para menos de 2.5s

* de 10 request de arquivos estáticos para 2

* Economia de $16.000,00 de servidores por dia

Page 37: Performance Front-end

R$ 1.000.000,001 Milhão de Reais

SOU FODA - PICA VOANDO =]

Page 38: Performance Front-end

1.000.000,001 Milhão de Reais

SOU FODA - PICA VOANDO =]

Page 39: Performance Front-end

PENSEM NISSO

Não importa se esteja fazendo um site institucional ou trabalhando em um grande portal, mesmo que a quantidade de

acessos a seu site/portal seja pequena. SEMPRE e SEMPRE pensem em performance, SEMPRE.

GIOVANNI KEPPELEN

Page 40: Performance Front-end

SEMPREPENSE EM

PERFORMANCENÃO IMPORTA A COMPLEXIDADE DE APLICAÇÃO

Page 42: Performance Front-end
Page 43: Performance Front-end

GITHUB.COM/KEPPELEN

Page 44: Performance Front-end

Obrigado!@KEPPELEN