Performance Web com ASP.NET MVC
-
Upload
rodolfo-fadino-junior -
Category
Technology
-
view
1.454 -
download
4
Transcript of Performance Web com ASP.NET MVC
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 TasksMaior eficiência no uso dos recursos computacionaisMelhor 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