SlideShare uma empresa Scribd logo
WPO Web Performance Optimization
com .NET Core
Rodolfo Fadino
Eric Schurman (Amazon)
Jake Brutlag (Google)
DistinctQueries/User
QueryRefinem
ent
Revenue/User
AnyClicks
Satisfaction
Tim
e
to
Click
(incresase
in
m
s)
50ms - - - - - -
200ms - - - -0,30% -0,40% 500
500ms - -0,60% -1,20% -1,00% -0,90% 1200
1000ms -0,70% -0,90% -2,80% -1,90% -1,60% 1900
2000ms -1,80% -2,10% -4,30% -4,40% -3,80% 3100
https://conferences.oreilly.com/velocity/velocity2009/public/schedule/detail/8523
Performance é importante?
http://kylerush.net/blog/meet-the-obama-
campaigns-250-million-fundraising-platform/
Performance = soma de fatores
Back-End
• Cache
• Thread
• Debug/Release
• SQL
• IO
• Network
• ...
Front-End
• CSS
• JS
• IMG
• Headers
• Minified
• CDN
• Proxy
• Cookies
“…only 10-20% of the
total end-user response
time is spent getting the
HTML document to the
browser. You need to
focus on the other 80-
90% if you want to make
your pages noticeably
faster…”
Steve Souders
14 regras
• Rule 1 - Make Fewer HTTP Requests
• Rule 2 - Use a Content Delivery Network
• Rule 3 - Add an Expires Header
• Rule 4 - Gzip Components
• Rule 5 - Put Stylesheets at the Top
• Rule 6 - Put Scripts at the Bottom
• Rule 7 - Avoid CSS Expressions
• Rule 8 - Make JavaScript and CSS External
• Rule 9 - Reduce DNS Lookups
• Rule 10 - Minify JavaScript
• Rule 11 - Avoid Redirects
• Rule 12 - Remove Duplicate Scripts
• Rule 13 - Configure ETags
• Rule 14 - Make AJAX Cacheable
Request e Response
Anatomia de uma Requisição HTTP
• DNS Lookup
• Initial Connection
• Keep-Alive Header
• Time to First Byte
• Content Download
329 requests
Cache
“O código mais rápido é aquele que não é
executado” (adaptação)
Memory Cache
Client Cache
Headers
Expires serve para definirmos a data em que
aquele recurso irá expirar (ex: Expires: Thu, 21 Dec
2013 16:00:00 GMT).
Cache-Control serve para definirmos por quanto
tempo (em segundos) aquele recurso irá
permanecer válido no navegador do cliente
GET Sem Cache
• Abaixo segue o exemplo de uma requisição sem nenhuma configuração de cache.
• Notem que na próxima requisição para o mesmo recurso, ele será baixado
novamente:
GET Condicional ( * )
• Headers Last-Modified e Etag podem se utilizados pelo servidor
• Na próxima requisição, esses headers são retornados para o servidor,
que analisa e responde se houve alguma mudança
GET Cache Configurado
• Cache-control, com o valor do max-age
• Com o Cache-control configurado, dentro do período, o navegador
não executará a requisição.
GZIP
Bundle &
Minification
Flush HTML
Ferramentas
Fiddler
Chrome Canary
Web Page Test
PageSpeed Insights
rodolfo@techfitapps.com
@rodolfofadino
rodolfo@techfitapps.com
Rodolfo Fadino
rodolfo@techfitapps.com
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE

Mais conteúdo relacionado

Mais procurados

Tunando o Wordpress para sites de alta visitação
Tunando o Wordpress para sites de alta visitaçãoTunando o Wordpress para sites de alta visitação
Tunando o Wordpress para sites de alta visitação
Israel Cefrin
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
Saveincloud
 
Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDB
Saveincloud
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
Felipe Klerk Signorini
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
Felipe Klerk Signorini
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
Saveincloud
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
Felipe Klerk Signorini
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
Saveincloud
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
Adriano Schmidt
 

Mais procurados (10)

Tunando o Wordpress para sites de alta visitação
Tunando o Wordpress para sites de alta visitaçãoTunando o Wordpress para sites de alta visitação
Tunando o Wordpress para sites de alta visitação
 
Escalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginxEscalabilidade e alta disponibilidade no php com nginx
Escalabilidade e alta disponibilidade no php com nginx
 
Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDB
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 

Semelhante a DevXperience WPO com .NET CORE

Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possível
Marcos Freccia
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
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
Henrique 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
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHP
Ciro Vargas
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
Uilson Souza
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Fabiano Weimar
 
Artigo benchmark moodle apresentação
Artigo benchmark moodle   apresentaçãoArtigo benchmark moodle   apresentação
Artigo benchmark moodle apresentaçãoMilton Azara
 
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
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
Rodolfo Fadino Junior
 
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
rafaelberlanda
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
Julian Fernandes
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
Jean Carlo Emer
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...Cleber Dantas
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaBreno Vitorino
 
Criando Aplicações Resilientes
Criando Aplicações ResilientesCriando Aplicações Resilientes
Criando Aplicações Resilientes
Maicon Carlos Pereira
 
Cacti
CactiCacti
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
Alexandre Tarifa
 
Amazon EC2 avançado
Amazon EC2 avançadoAmazon EC2 avançado
Amazon EC2 avançado
Amazon Web Services LATAM
 

Semelhante a DevXperience WPO com .NET CORE (20)

Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possível
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
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
 
Darkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHPDarkmira - Performance em aplicações PHP
Darkmira - Performance em aplicações PHP
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
Performance Tuning de Clusters Plone - PyConBrasil 2 (2006)
 
Artigo benchmark moodle apresentação
Artigo benchmark moodle   apresentaçãoArtigo benchmark moodle   apresentação
Artigo benchmark moodle apresentação
 
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
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
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
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em Java
 
Criando Aplicações Resilientes
Criando Aplicações ResilientesCriando Aplicações Resilientes
Criando Aplicações Resilientes
 
Cacti
CactiCacti
Cacti
 
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
 
Amazon EC2 avançado
Amazon EC2 avançadoAmazon EC2 avançado
Amazon EC2 avançado
 

Mais de Rodolfo Fadino Junior

Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]
Rodolfo Fadino Junior
 
TDC 2019 Clean Architeture com .net core
TDC 2019  Clean Architeture com .net coreTDC 2019  Clean Architeture com .net core
TDC 2019 Clean Architeture com .net core
Rodolfo Fadino Junior
 
Mvp conf middlewares com asp.net core
Mvp conf   middlewares com asp.net coreMvp conf   middlewares com asp.net core
Mvp conf middlewares com asp.net core
Rodolfo Fadino Junior
 
Middlewares com asp.net core
Middlewares com asp.net coreMiddlewares com asp.net core
Middlewares com asp.net core
Rodolfo Fadino Junior
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
Rodolfo Fadino Junior
 
Design e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharpDesign e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharp
Rodolfo Fadino Junior
 
Design e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharpDesign e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharp
Rodolfo Fadino Junior
 
Web Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET CoreWeb Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET Core
Rodolfo Fadino Junior
 
ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016
Rodolfo Fadino Junior
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016
Rodolfo Fadino Junior
 
Desenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVCDesenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVC
Rodolfo Fadino Junior
 
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuáriosFatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Rodolfo Fadino Junior
 
Minha Vida Fiap - Desenvolvimento
Minha Vida Fiap - DesenvolvimentoMinha Vida Fiap - Desenvolvimento
Minha Vida Fiap - Desenvolvimento
Rodolfo Fadino Junior
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
Rodolfo Fadino Junior
 
TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?
Rodolfo Fadino Junior
 
EmberJS + SPA
EmberJS + SPAEmberJS + SPA
EmberJS + SPA
Rodolfo Fadino Junior
 
Performance Web
Performance WebPerformance Web
Performance Web
Rodolfo Fadino Junior
 
Windows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaSWindows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaS
Rodolfo Fadino Junior
 

Mais de Rodolfo Fadino Junior (20)

Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]
 
TDC 2019 Clean Architeture com .net core
TDC 2019  Clean Architeture com .net coreTDC 2019  Clean Architeture com .net core
TDC 2019 Clean Architeture com .net core
 
Mvp conf middlewares com asp.net core
Mvp conf   middlewares com asp.net coreMvp conf   middlewares com asp.net core
Mvp conf middlewares com asp.net core
 
Middlewares com asp.net core
Middlewares com asp.net coreMiddlewares com asp.net core
Middlewares com asp.net core
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Design e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharpDesign e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharp
 
Design e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharpDesign e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharp
 
Web Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET CoreWeb Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET Core
 
ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016
 
Desenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVCDesenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVC
 
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuáriosFatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
 
Minha Vida Fiap - Desenvolvimento
Minha Vida Fiap - DesenvolvimentoMinha Vida Fiap - Desenvolvimento
Minha Vida Fiap - Desenvolvimento
 
SignalR Visual Studio Summit
SignalR Visual Studio SummitSignalR Visual Studio Summit
SignalR Visual Studio Summit
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?
 
Entregabilidade e Emails
Entregabilidade e EmailsEntregabilidade e Emails
Entregabilidade e Emails
 
EmberJS + SPA
EmberJS + SPAEmberJS + SPA
EmberJS + SPA
 
Performance Web
Performance WebPerformance Web
Performance Web
 
Windows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaSWindows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaS
 

DevXperience WPO com .NET CORE

  • 1. WPO Web Performance Optimization com .NET Core Rodolfo Fadino
  • 2. Eric Schurman (Amazon) Jake Brutlag (Google) DistinctQueries/User QueryRefinem ent Revenue/User AnyClicks Satisfaction Tim e to Click (incresase in m s) 50ms - - - - - - 200ms - - - -0,30% -0,40% 500 500ms - -0,60% -1,20% -1,00% -0,90% 1200 1000ms -0,70% -0,90% -2,80% -1,90% -1,60% 1900 2000ms -1,80% -2,10% -4,30% -4,40% -3,80% 3100 https://conferences.oreilly.com/velocity/velocity2009/public/schedule/detail/8523 Performance é importante?
  • 4. Performance = soma de fatores Back-End • Cache • Thread • Debug/Release • SQL • IO • Network • ... Front-End • CSS • JS • IMG • Headers • Minified • CDN • Proxy • Cookies
  • 5. “…only 10-20% of the total end-user response time is spent getting the HTML document to the browser. You need to focus on the other 80- 90% if you want to make your pages noticeably faster…” Steve Souders
  • 6. 14 regras • Rule 1 - Make Fewer HTTP Requests • Rule 2 - Use a Content Delivery Network • Rule 3 - Add an Expires Header • Rule 4 - Gzip Components • Rule 5 - Put Stylesheets at the Top • Rule 6 - Put Scripts at the Bottom • Rule 7 - Avoid CSS Expressions • Rule 8 - Make JavaScript and CSS External • Rule 9 - Reduce DNS Lookups • Rule 10 - Minify JavaScript • Rule 11 - Avoid Redirects • Rule 12 - Remove Duplicate Scripts • Rule 13 - Configure ETags • Rule 14 - Make AJAX Cacheable
  • 8. Anatomia de uma Requisição HTTP • DNS Lookup • Initial Connection • Keep-Alive Header • Time to First Byte • Content Download
  • 10.
  • 11. Cache
  • 12. “O código mais rápido é aquele que não é executado” (adaptação) Memory Cache
  • 14. Headers Expires serve para definirmos a data em que aquele recurso irá expirar (ex: Expires: Thu, 21 Dec 2013 16:00:00 GMT). Cache-Control serve para definirmos por quanto tempo (em segundos) aquele recurso irá permanecer válido no navegador do cliente
  • 15. GET Sem Cache • Abaixo segue o exemplo de uma requisição sem nenhuma configuração de cache. • Notem que na próxima requisição para o mesmo recurso, ele será baixado novamente:
  • 16. GET Condicional ( * ) • Headers Last-Modified e Etag podem se utilizados pelo servidor • Na próxima requisição, esses headers são retornados para o servidor, que analisa e responde se houve alguma mudança
  • 17. GET Cache Configurado • Cache-control, com o valor do max-age • Com o Cache-control configurado, dentro do período, o navegador não executará a requisição.
  • 18.
  • 19. GZIP