SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
Para ontem:
carregando sites mais
rapidamente
por Thiago Ayub
twitter.com/ayubio
Por quê? Para que
tanta pressa?
Fonte: https://content.akamai.com/PG1526-PerformanceMatters.html
Fonte: https://content.akamai.com/PG1526-PerformanceMatters.html
Fonte: Aberdeen.com
O tempo de
carregamento das
páginas de seu site
impacta diretamente no
faturamento de sua
empresa
$
Precisamos para
ontem fazer nosso
site carregar mais
rapidamente
http://WebPageTest.org
Principais critérios para pontuação
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
1. Utilizar uma CDN brasileira.
2. Utilizar cache no servidor da
renderização das páginas.
3. Utilizar servidores de DNS
autoritativos brasileiros.
4. Aumentar o TTL das entradas
DNS.
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
1. Ative esta configuração em seu
Apache, nginx etc.
2. Importe para seu servidor web
elementos de terceiros.
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
1. Ative esta configuração em seu
Apache, nginx etc. (gzip)
2. Sirva conteúdos já comprimidos:
/index.html.gz, /results.json.gz,
/button.svg.gz
“Compressão com pressão”
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
Resultados do “Content Breakdown” de www.r7.com
Como melhorar as imagens?
● JPEG Progressive
● PNG para layout
● SVG para layout
● Adoção de WebP
Como melhorar as imagens?
● JPEG Progressive
● PNG para layout
● SVG para layout
● Adoção de WebP
Fonte dos exemplos: https://blog.codinghorror.com/progressive-image-rendering/
Baseline Progressive
Como melhorar as imagens?
● JPEG Progressive
● PNG para layout
● SVG para layout
● Adoção de WebP
jpegtran -copy none -optimize original.jpg otimizada1.jpg
jpegtran -copy none -progressive otimizada1.jpg otimizada-final.jpg
Como melhorar as imagens?
● JPEG Progressive
● PNG para layout
● SVG para layout
● Adoção de WebP
1. Não utilize JPG para elementos
de layout. Prefira PNG e SVG.
2. Utilize o pngcrush em todos os
seus PNGs.
3. Utilize o SVGO para arquivos
SVG.
283 kB
no PNG original
283 kB
no PNG original
173 kB (-39%)
após pngcrush -brute -reduce
Como melhorar as imagens?
● JPEG Progressive
● PNG para layout
● SVG para layout
● Adoção de WebP
1. Converter todas as imagens JPG
e PNG para também WebP.
2. Servir WebP se o browser
suportar.
3. Não é difícil conseguir imagens
80% menores em bytes com
WebP.
canIuse.com
Recomendado: https://www.keycdn.com/blog/convert-to-webp-the-successor-of-jpeg/
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
Cabeçalhos HTTP para gestão de cache
● Expires: define uma data futura e exata para expirar o conteúdo.
● Cache-Control: define um tempo em segundos para expirar o conteúdo.
● ETag: um fingerprint de validação da versão do conteúdo.
● Last-Modified: declara a data e hora da versão servida.
A presença do ETag e Last-Modified modificam muito o ciclo de comunicação
entre o servidor HTTP e o browser.
HTTP
200
HTTP
304
!=
Para conteúdos
que mudam
muito
Sirva os cabeçalhos:
● Cache-Control
● ETag
● Expires
● Last-Modified
Para conteúdos
que mudam
pouco
Sirva os cabeçalhos:
● Cache-Control
● ETag
● Expires
● Last-Modified
Cache-Control: max-age=3600
● O browser armazenará em cache esse objeto por 1h.
● Recomendo o valor de 7776000 (90 dias).
● Mudou o conteúdo? Mude a URI!
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
● Contrate e implemente uma CDN
com forte presença no Brasil
para servir JS, CSS, imagens e
qualquer outro binário.
● Após se acostumar com uma
CDN, entregue também seu
HTML.
● Utilize o maior valor de
Cache-Control possível em
todos os objetos.
Como melhorar cada um?
● Time to First Byte (TTFB)
● Keep-alive enabled
● Compress transfers
● Compress images
● Cache static content
● Effective use of CDN
Melhorando todos estes itens,
teremos um site que carrega
imediatamente, explodindo na
tela, reduzindo o consumo de
servidores e aumentando o
faturamento e a popularidade de
seu negócio.
Obrigado!
Twitter: @ayubio
YouTube: “Eu faço a internet funcionar”

Mais conteúdo relacionado

Mais procurados

Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.Yan Magalhães
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosPedro Chaves
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Bruno Pedro
 
Vamos automatizar! Conheça o Gulp Js
Vamos automatizar! Conheça o Gulp JsVamos automatizar! Conheça o Gulp Js
Vamos automatizar! Conheça o Gulp JsYan Magalhães
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 

Mais procurados (6)

Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.Automatize suas tarefas: conheça o GulpJS.
Automatize suas tarefas: conheça o GulpJS.
 
Gulp
GulpGulp
Gulp
 
Como se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passosComo se tornar um viciado em performance em 5 passos
Como se tornar um viciado em performance em 5 passos
 
Cache e Performance (in portuguese)
Cache e Performance (in portuguese)Cache e Performance (in portuguese)
Cache e Performance (in portuguese)
 
Vamos automatizar! Conheça o Gulp Js
Vamos automatizar! Conheça o Gulp JsVamos automatizar! Conheça o Gulp Js
Vamos automatizar! Conheça o Gulp Js
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 

Semelhante a Carregando sites mais rapidamente: otimizações para melhorar o tempo de carregamento

Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkePaulo Fernandes
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFabiano Weimar
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
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
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu siteHenrique Lima
 
Ebook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressEbook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressDaniel Paz
 
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Diogo Giassi D'Agostin
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Flavio Torres
 
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
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPressGuga Alves
 
Fargate fibonacci - pt br
Fargate   fibonacci - pt brFargate   fibonacci - pt br
Fargate fibonacci - pt brRodrigo Galba
 
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
 
Apresentação tdc como aproveitar os novos recursos do java ee 7
Apresentação tdc   como aproveitar os novos recursos do java ee 7Apresentação tdc   como aproveitar os novos recursos do java ee 7
Apresentação tdc como aproveitar os novos recursos do java ee 7Denis Silva
 

Semelhante a Carregando sites mais rapidamente: otimizações para melhorar o tempo de carregamento (20)

Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.caching
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
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
 
Aumente a performance de seu site
Aumente a performance de seu siteAumente a performance de seu site
Aumente a performance de seu site
 
Ebook - Check-list otimização WordPress
Ebook - Check-list otimização WordPressEbook - Check-list otimização WordPress
Ebook - Check-list otimização WordPress
 
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
Multipart Upload, Streaming e Criptografia - Desafios de um serviço de armaze...
 
Spring boot
Spring bootSpring boot
Spring boot
 
Wordpress
WordpressWordpress
Wordpress
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13
 
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
 
Qnax servidores dedicado no brasil
Qnax servidores dedicado no brasilQnax servidores dedicado no brasil
Qnax servidores dedicado no brasil
 
Otimização Front-end para WordPress
Otimização Front-end para WordPressOtimização Front-end para WordPress
Otimização Front-end para WordPress
 
Fargate fibonacci - pt br
Fargate   fibonacci - pt brFargate   fibonacci - pt br
Fargate fibonacci - pt br
 
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
 
Apresentação tdc como aproveitar os novos recursos do java ee 7
Apresentação tdc   como aproveitar os novos recursos do java ee 7Apresentação tdc   como aproveitar os novos recursos do java ee 7
Apresentação tdc como aproveitar os novos recursos do java ee 7
 

Carregando sites mais rapidamente: otimizações para melhorar o tempo de carregamento

  • 1. Para ontem: carregando sites mais rapidamente por Thiago Ayub twitter.com/ayubio
  • 2. Por quê? Para que tanta pressa?
  • 6. O tempo de carregamento das páginas de seu site impacta diretamente no faturamento de sua empresa $
  • 7. Precisamos para ontem fazer nosso site carregar mais rapidamente
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Principais critérios para pontuação ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN
  • 14. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN 1. Utilizar uma CDN brasileira. 2. Utilizar cache no servidor da renderização das páginas. 3. Utilizar servidores de DNS autoritativos brasileiros. 4. Aumentar o TTL das entradas DNS.
  • 15. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN 1. Ative esta configuração em seu Apache, nginx etc. 2. Importe para seu servidor web elementos de terceiros.
  • 16. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN 1. Ative esta configuração em seu Apache, nginx etc. (gzip) 2. Sirva conteúdos já comprimidos: /index.html.gz, /results.json.gz, /button.svg.gz “Compressão com pressão”
  • 17. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN
  • 18.
  • 19. Resultados do “Content Breakdown” de www.r7.com
  • 20. Como melhorar as imagens? ● JPEG Progressive ● PNG para layout ● SVG para layout ● Adoção de WebP
  • 21. Como melhorar as imagens? ● JPEG Progressive ● PNG para layout ● SVG para layout ● Adoção de WebP Fonte dos exemplos: https://blog.codinghorror.com/progressive-image-rendering/ Baseline Progressive
  • 22. Como melhorar as imagens? ● JPEG Progressive ● PNG para layout ● SVG para layout ● Adoção de WebP jpegtran -copy none -optimize original.jpg otimizada1.jpg jpegtran -copy none -progressive otimizada1.jpg otimizada-final.jpg
  • 23. Como melhorar as imagens? ● JPEG Progressive ● PNG para layout ● SVG para layout ● Adoção de WebP 1. Não utilize JPG para elementos de layout. Prefira PNG e SVG. 2. Utilize o pngcrush em todos os seus PNGs. 3. Utilize o SVGO para arquivos SVG.
  • 24.
  • 25. 283 kB no PNG original
  • 26. 283 kB no PNG original 173 kB (-39%) após pngcrush -brute -reduce
  • 27. Como melhorar as imagens? ● JPEG Progressive ● PNG para layout ● SVG para layout ● Adoção de WebP 1. Converter todas as imagens JPG e PNG para também WebP. 2. Servir WebP se o browser suportar. 3. Não é difícil conseguir imagens 80% menores em bytes com WebP.
  • 29.
  • 30. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN
  • 31.
  • 32.
  • 33. Cabeçalhos HTTP para gestão de cache ● Expires: define uma data futura e exata para expirar o conteúdo. ● Cache-Control: define um tempo em segundos para expirar o conteúdo. ● ETag: um fingerprint de validação da versão do conteúdo. ● Last-Modified: declara a data e hora da versão servida. A presença do ETag e Last-Modified modificam muito o ciclo de comunicação entre o servidor HTTP e o browser.
  • 35. Para conteúdos que mudam muito Sirva os cabeçalhos: ● Cache-Control ● ETag ● Expires ● Last-Modified Para conteúdos que mudam pouco Sirva os cabeçalhos: ● Cache-Control ● ETag ● Expires ● Last-Modified
  • 36. Cache-Control: max-age=3600 ● O browser armazenará em cache esse objeto por 1h. ● Recomendo o valor de 7776000 (90 dias). ● Mudou o conteúdo? Mude a URI!
  • 37. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN ● Contrate e implemente uma CDN com forte presença no Brasil para servir JS, CSS, imagens e qualquer outro binário. ● Após se acostumar com uma CDN, entregue também seu HTML. ● Utilize o maior valor de Cache-Control possível em todos os objetos.
  • 38.
  • 39. Como melhorar cada um? ● Time to First Byte (TTFB) ● Keep-alive enabled ● Compress transfers ● Compress images ● Cache static content ● Effective use of CDN Melhorando todos estes itens, teremos um site que carrega imediatamente, explodindo na tela, reduzindo o consumo de servidores e aumentando o faturamento e a popularidade de seu negócio.
  • 40. Obrigado! Twitter: @ayubio YouTube: “Eu faço a internet funcionar”