Download - DevXperience WPO com .NET CORE
![Page 1: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/1.jpg)
WPO Web Performance Optimizationcom .NET Core
Rodolfo Fadino
![Page 2: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/2.jpg)
Eric Schurman (Amazon)Jake Brutlag (Google)
Distin
ct Q
uerie
s/Use
r
Query R
efin
emen
t
Revenue/
User
Any Clic
ks
Satis
fact
ion
Tim
e to
Clic
k
(incr
esase
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?
![Page 3: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/3.jpg)
http://kylerush.net/blog/meet-the-obama-campaigns-250-million-fundraising-platform/
![Page 4: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/4.jpg)
Performance = soma de fatores
Back-End
• Cache
• Thread
• Debug/Release
• SQL
• IO
• Network
• ...
Front-End
• CSS
• JS
• IMG
• Headers
• Minified
• CDN
• Proxy
• Cookies
• ...
![Page 5: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/5.jpg)
“…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
![Page 6: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/6.jpg)
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
![Page 7: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/7.jpg)
Request e Response
![Page 8: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/8.jpg)
Anatomia de uma Requisição HTTP
• DNS Lookup
• Initial Connection• Keep-Alive Header
• Time to First Byte
• Content Download
![Page 9: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/9.jpg)
329 requests
![Page 10: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/10.jpg)
![Page 11: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/11.jpg)
Cache
![Page 12: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/12.jpg)
“O código mais rápido é aquele que não é
executado” (adaptação)
Memory Cache
![Page 13: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/13.jpg)
![Page 14: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/14.jpg)
![Page 15: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/15.jpg)
![Page 16: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/16.jpg)
![Page 17: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/17.jpg)
![Page 18: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/18.jpg)
Sem Cache
Com Cache
![Page 19: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/19.jpg)
Client Cache
![Page 20: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/20.jpg)
Headers
Expires serve para definirmos a data em que aquele recurso irá expirar (ex: Expires: Thu, 21 Dec2013 16:00:00 GMT).
Cache-Control serve para definirmos por quanto tempo (em segundos) aquele recurso irá permanecer válido no navegador do cliente
![Page 21: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/21.jpg)
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:
![Page 22: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/22.jpg)
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
![Page 23: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/23.jpg)
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.
![Page 24: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/24.jpg)
Com IIS
![Page 25: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/25.jpg)
![Page 26: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/26.jpg)
![Page 27: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/27.jpg)
Com Kestrel
![Page 28: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/28.jpg)
![Page 29: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/29.jpg)
![Page 30: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/30.jpg)
GZIP
![Page 31: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/31.jpg)
Com IIS
![Page 32: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/32.jpg)
![Page 33: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/33.jpg)
![Page 34: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/34.jpg)
Com Kestrel
![Page 35: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/35.jpg)
![Page 36: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/36.jpg)
![Page 37: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/37.jpg)
Sem GZIP
![Page 38: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/38.jpg)
Com GZIP
![Page 39: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/39.jpg)
Bundle &Minification
![Page 40: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/40.jpg)
![Page 41: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/41.jpg)
![Page 42: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/42.jpg)
![Page 43: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/43.jpg)
![Page 44: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/44.jpg)
![Page 45: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/45.jpg)
![Page 46: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/46.jpg)
![Page 47: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/47.jpg)
![Page 48: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/48.jpg)
![Page 49: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/49.jpg)
Flush HTML
![Page 50: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/50.jpg)
Ferramentas
FiddlerChrome CanaryWeb Page TestPageSpeed Insights
![Page 51: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/51.jpg)
[email protected]@rodolfofadino
![Page 53: DevXperience WPO com .NET CORE](https://reader033.vdocuments.net/reader033/viewer/2022051710/5a670cec7f8b9a85028b4ac1/html5/thumbnails/53.jpg)
Rodolfo Fadino [email protected]