SlideShare une entreprise Scribd logo
1  sur  24
Performance
ASP.NET MVC
@RodolfoFadino
• MVP em Visual C#
• Especialista em desenvolvimento web
• Tecnologia em Processamento de Dados
FATEC-SP
• Portal Minha Vida
! Instantâneo
Soma de fatores
Back-End
• Cache
• Thread
• Debug/Release
• SQL
• IO
• Network
• ...
Front-End
• CSS
• JS
• IMG
• Headers
• Minified
• CDN
• Proxy
• Cookies
• ...
Vamos fazer um projeto para isso
Backlog
Melhorar a performance é uma
responsabilidade nossa
(desenvolvedor)
IIS
• ApplicationPool
– Isola nossas aplicações promovendo segurança,
confiança, disponibilidade e performance.
– Versão de framework
– Modo de pipeline
– Recycling
• WorkerProcess
– Host da aplicação (w3wp.exe)
– Pool de Threads
• Número limitado
• Bloqueio
Requests e o Thread Pool
Processando Requisições Síncronas (Caixa Correios)
Requests e o Thread Pool
Processando Requisições Assíncronas (Garçom restaurante)
Requests e o Thread Pool
Processando Requisições Assíncronas (Garçom restaurante)
Task-based Asynchronous
Pattern (TAP)
Task Parallel Library (TPL)
Baseada no conceito de Tasks
Maior eficiência no uso dos recursos computacionais
Melhor controle programático das Threads
Cache
• “A melhor solução de performance é fazer
com que o seu código não seja executado o
tempo todo!” Tarifa, Alexandre
• “…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…”
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
Anatomia de uma requisição HTTP
• DNS Lookup
• Initial Connection
– Keep-Alive Header
• Time to First Byte
• Content Download
CSS e JS
• Bundling
• Minification
• CSS
– Header
• JS
– Assíncrono
– Mais próximo do final
Imagens
• Expires
– Handler
– Imagens fisicas
• Lazy Load
– Dependendo do cenário
• Sprites
• Otimizar
– RIOT
Dicas Rápidas
• Debug/Release
• UrlRewrite
• SQL Plano de execução
• SQL gerado ORM
• Glimpse

Contenu connexe

Tendances

L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016Renato Groff
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilRenato Groff
 
O maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksO maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksRodrigo Kono
 
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Renato Groff
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Renato Groff
 
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
 
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 2016Rodolfo Fadino Junior
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosPaulino Michelazzo
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDenis Vieira
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloRenato Groff
 

Tendances (20)

PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016ASP.NET Core - iMasters - Março/2016
ASP.NET Core - iMasters - Março/2016
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
 
O maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksO maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooks
 
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
Construindo APIs seguras com o ASP.NET Core - .NET Community Summit 2018
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App on L...
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
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
 
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
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
Drupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos DesafiosDrupal 7 - Nova Versão para Novos Desafios
Drupal 7 - Nova Versão para Novos Desafios
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
Desenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full JavascriptDesenvolvendo uma aplicacao Full Javascript
Desenvolvendo uma aplicacao Full Javascript
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
 

En vedette

En vedette (7)

SignalR Visual Studio Summit
SignalR Visual Studio SummitSignalR Visual Studio Summit
SignalR Visual Studio Summit
 
Performance Web
Performance WebPerformance Web
Performance Web
 
TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?
 
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
 
Works with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and MacWorks with ASP.NET Core on Linux and Mac
Works with ASP.NET Core on Linux and Mac
 
.Net Core, Asp.net Core and Docker
.Net Core, Asp.net Core and Docker .Net Core, Asp.net Core and Docker
.Net Core, Asp.net Core and Docker
 
Oito dicas sobre Docker
Oito dicas sobre DockerOito dicas sobre Docker
Oito dicas sobre Docker
 

Similaire à Performance Web com ASP.NET MVC

Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Rodolfo Fadino Junior
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)Daniel Lopes
 
LABjs e JQuery Templates
LABjs e JQuery TemplatesLABjs e JQuery Templates
LABjs e JQuery TemplatesCleber Dantas
 
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
 
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...Rafael Schettino
 
IIS para desenvolvedores
IIS para desenvolvedoresIIS para desenvolvedores
IIS para desenvolvedoresCleber Dantas
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless
5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless
5º Meetup Datalab - Do nada a Produção usando Arquitetura ServerlessAndré Ricardo da S. Souza
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a WebLuiz Cláudio Silva
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
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
 

Similaire à Performance Web com ASP.NET MVC (20)

Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)
 
LABjs e JQuery Templates
LABjs e JQuery TemplatesLABjs e JQuery Templates
LABjs e JQuery Templates
 
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
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
Otimização de Desempenho de Websites desenvolvidos em Microsoft ASP.NET e hos...
 
IIS para desenvolvedores
IIS para desenvolvedoresIIS para desenvolvedores
IIS para desenvolvedores
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless
5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless
5º Meetup Datalab - Do nada a Produção usando Arquitetura Serverless
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Tirando leite de pedra
Tirando leite de pedraTirando leite de pedra
Tirando leite de pedra
 
Bigdata
BigdataBigdata
Bigdata
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack Developer
 
Browsers como vivem o que fazem
Browsers como vivem o que fazemBrowsers como vivem o que fazem
Browsers como vivem o que fazem
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
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...
 

Plus 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 coreRodolfo 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 coreRodolfo 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 CarlosRodolfo 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 CSharpRodolfo 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 CSharpRodolfo 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 CoreRodolfo 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áriosRodolfo Fadino Junior
 
ASP.NET MVC 4 Codificando.NET 10 anos
ASP.NET MVC 4 Codificando.NET 10 anosASP.NET MVC 4 Codificando.NET 10 anos
ASP.NET MVC 4 Codificando.NET 10 anosRodolfo Fadino Junior
 
StructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaStructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaRodolfo Fadino Junior
 

Plus 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]
 
Performance tdc sp 2020 final
Performance tdc sp 2020 finalPerformance tdc sp 2020 final
Performance tdc sp 2020 final
 
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
 
DevXperience WPO com .NET CORE
DevXperience WPO com .NET COREDevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
 
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
 
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
 
Entregabilidade e Emails
Entregabilidade e EmailsEntregabilidade e Emails
Entregabilidade e Emails
 
EmberJS + SPA
EmberJS + SPAEmberJS + SPA
EmberJS + SPA
 
Windows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaSWindows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaS
 
ASP.NET MVC 4 Codificando.NET 10 anos
ASP.NET MVC 4 Codificando.NET 10 anosASP.NET MVC 4 Codificando.NET 10 anos
ASP.NET MVC 4 Codificando.NET 10 anos
 
Smtp => Fatores e entregabilidade
Smtp => Fatores e entregabilidadeSmtp => Fatores e entregabilidade
Smtp => Fatores e entregabilidade
 
StructureMap, Injetor de Dependência
StructureMap, Injetor de DependênciaStructureMap, Injetor de Dependência
StructureMap, Injetor de Dependência
 
Web Real-time com ASP.NET SignalR
Web Real-time com ASP.NET SignalRWeb Real-time com ASP.NET SignalR
Web Real-time com ASP.NET SignalR
 

Performance Web com ASP.NET MVC

  • 2. @RodolfoFadino • MVP em Visual C# • Especialista em desenvolvimento web • Tecnologia em Processamento de Dados FATEC-SP • Portal Minha Vida
  • 3.
  • 5. Soma de fatores Back-End • Cache • Thread • Debug/Release • SQL • IO • Network • ... Front-End • CSS • JS • IMG • Headers • Minified • CDN • Proxy • Cookies • ...
  • 6. Vamos fazer um projeto para isso
  • 8. Melhorar a performance é uma responsabilidade nossa (desenvolvedor)
  • 9. IIS • ApplicationPool – Isola nossas aplicações promovendo segurança, confiança, disponibilidade e performance. – Versão de framework – Modo de pipeline – Recycling • WorkerProcess – Host da aplicação (w3wp.exe) – Pool de Threads • Número limitado • Bloqueio
  • 10. Requests e o Thread Pool Processando Requisições Síncronas (Caixa Correios)
  • 11. Requests e o Thread Pool Processando Requisições Assíncronas (Garçom restaurante)
  • 12. Requests e o Thread Pool Processando Requisições Assíncronas (Garçom restaurante)
  • 13. Task-based Asynchronous Pattern (TAP) Task Parallel Library (TPL) Baseada no conceito de Tasks Maior eficiência no uso dos recursos computacionais Melhor controle programático das Threads
  • 14.
  • 15. Cache • “A melhor solução de performance é fazer com que o seu código não seja executado o tempo todo!” Tarifa, Alexandre
  • 16.
  • 17. • “…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…”
  • 18. 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
  • 19. Anatomia de uma requisição HTTP • DNS Lookup • Initial Connection – Keep-Alive Header • Time to First Byte • Content Download
  • 20. CSS e JS • Bundling • Minification • CSS – Header • JS – Assíncrono – Mais próximo do final
  • 21.
  • 22. Imagens • Expires – Handler – Imagens fisicas • Lazy Load – Dependendo do cenário • Sprites • Otimizar – RIOT
  • 23.
  • 24. Dicas Rápidas • Debug/Release • UrlRewrite • SQL Plano de execução • SQL gerado ORM • Glimpse