performance codificando night week 2016
TRANSCRIPT
Performance
Codificando Night Week 2016
Rodolfo Fadino• Microsoft MVP• 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)
Soma de fatores
Back-End• Cache• Thread• Debug/Release• SQL• IO• Network• ...
Front-End• CSS• JS• IMG• Headers• Minified• CDN• Proxy• Cookies• ...
BACK-END
Cache
• “A melhor solução de performance é fazer com que o seu código não seja executado o tempo todo!” Tarifa, Alexandre
Demo
Cache de objetos
ORM
• Conheça as consultas e como seu ORM está trabalhando os dados
• Teste e analise quais features são importantes antes de começar a utilizar um (EF, Dapper,ADO,etc)
Demo
ORM
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
API
API
CacheJSONGzipOData
FRONT-END
• “…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
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
DemoBundlingMinification
Imagens
• Expires– Handler– Imagens fisicas
• Lazy Load– Dependendo do cenário
• Sprites• Otimizar– RIOT
DemoImagens
Dicas Rápidas
• Debug/Release• UrlRewrite• SQL Plano de execução• Glimpse
Obrigado
• @rodolfofadino• http://rodolfofadino.com.br