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
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)
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
API
API
Cache
JSON
Gzip
OData
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
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
• Glimpse
Obrigado
• @rodolfofadino
• http://rodolfofadino.com.br

Performance Codificando Night Week 2016

  • 1.
  • 2.
    Rodolfo Fadino • MicrosoftMVP • Especialista em desenvolvimento web • Tecnologia em Processamento de Dados FATEC-SP • Portal Minha Vida
  • 4.
  • 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 umprojeto para isso
  • 7.
  • 8.
    Melhorar a performanceé uma responsabilidade nossa (desenvolvedor)
  • 9.
    Soma de fatores Back-End •Cache • Thread • Debug/Release • SQL • IO • Network • ... Front-End • CSS • JS • IMG • Headers • Minified • CDN • Proxy • Cookies • ...
  • 10.
  • 11.
    Cache • “A melhorsolução de performance é fazer com que o seu código não seja executado o tempo todo!” Tarifa, Alexandre
  • 13.
    ORM • Conheça asconsultas 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)
  • 15.
    Requests e oThread Pool Processando Requisições Assíncronas (Garçom restaurante)
  • 16.
    Task-based Asynchronous Pattern (TAP) TaskParallel Library (TPL) Baseada no conceito de Tasks Maior eficiência no uso dos recursos computacionais Melhor controle programático das Threads
  • 17.
  • 18.
  • 19.
  • 20.
    • “…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)
  • 21.
    14 regras • Rule1 - 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
  • 22.
    Anatomia de umarequisição HTTP • DNS Lookup • Initial Connection – Keep-Alive Header • Time to First Byte • Content Download
  • 23.
    CSS e JS •Bundling • Minification • CSS – Header • JS – Assíncrono – Mais próximo do final
  • 25.
    Imagens • Expires – Handler –Imagens fisicas • Lazy Load – Dependendo do cenário • Sprites • Otimizar – RIOT
  • 27.
    Dicas Rápidas • Debug/Release •UrlRewrite • SQL Plano de execução • Glimpse
  • 28.