Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Optimalizace výkonu webových aplikací

  • Login to see the comments

Optimalizace výkonu webových aplikací

  1. 1. Optimalizace výkonu webových aplikací Michal Špaček, Skype; #4IT445 2011 , Praha @spazef0rze, www.michalspacek.cz
  2. 2. Optimalizace výkonu = zvyšování rychlosti <ul>Slide </ul>
  3. 3. Z tohoto <ul>Slide </ul>
  4. 4. uděláme tohle <ul>Slide </ul>
  5. 5. nebo aspoň tohle <ul>Slide </ul>
  6. 6. Zvyšování rychlosti dřívější zobrazení
  7. 7. < 5 sec Stránku zobrazit do 5 vteřin
  8. 8. 1 milión požadavků za den Při dané zátěži
  9. 9. Jak měřit dobu zobrazení?
  10. 10. <ul>Slide </ul>
  11. 12. <ul>Slide </ul>
  12. 13. Jak zrychlit?
  13. 14. vizuálně <ul>Slide </ul>
  14. 15. Pomocí animací „ zrychlíme“ načítání
  15. 16. Někdy i několikanásobně <ul>Slide </ul>
  16. 17. Jak opravdu zrychlit?
  17. 18. CSS Sprites Snížit počet HTTP požadavků pomocí
  18. 19. Logo je součástí jednoho souboru s mnoha dalšími ikonami <ul>Slide </ul>
  19. 20. <ul>Slide </ul>
  20. 21. Které jsou vybírány pomocí CSS <ul>Slide </ul>
  21. 22. CDN Content Delivery Network
  22. 23. Facebook používá CDN pro statické soubory <ul>Slide </ul>
  23. 24. Legenda: Původní server Uzel s kopií dat Návštěvník Spojení wpbeginner.com Takto funguje CDN <ul>Slide </ul>
  24. 25. Poskytovatelé CDN
  25. 26. Cache hlavičky v HTTP Pro statický obsah řeší HTTP server Pro správnou funkci nejen CDN a Sprites
  26. 27. Last-Modified If-Modified-Since V HTTP odpovědi V HTTP dotazu, řeší CDN
  27. 28. ETag If-None-Match V HTTP odpovědi V HTTP dotazu, řeší CDN
  28. 29. Content-Length Content-Type Lze poslat více požadavků v jednom spojení Umm, prostě správně říci, co posílám za data
  29. 30. http://www.slideshare.net/spaze/caching-strategies Pro víc info o HTTP cache viz moje prezentace
  30. 31. Zrychlení dotazů do databáze
  31. 32. Je třeba použít indexy <ul>Slide </ul>
  32. 33. EXPLAIN SELECT … Prováděcí plán nám poví, jestli se indexy používají Plán zjistíme pomocí SQL příkazu EXPLAIN
  33. 34. Výstup <ul>Slide </ul>
  34. 35. Aplikační cache memcached, APC
  35. 36. Ukládání výsledků dotazů do memcached <ul>Slide </ul>
  36. 37. PHP extenze, lze cachovat např. konfiguraci z ini/xml souborů (také opcode cache) <ul>Slide </ul>
  37. 38. na více serverů Rozložení zátěže Více serverů pro db Více serverů pro aplikaci Více serverů pro data (CDN) <ul>Slide </ul>
  38. 39. Pomalé/nejisté operace Odesílání mailů Převod IP na jméno (DNS)
  39. 40. pomocí externího programu, aby se nezpomalovalo zobrazení stránky Provádět asynchronně
  40. 41. Rychlost není VŠE <ul>Slide </ul>
  41. 42. Bezpečnost! <ul>Slide </ul>
  42. 43. Mohou snížit výkon, posílají se dva dotazy (připrav a vykonej), ale ochrání proti SQL Injection Prepared statements
  43. 44. Poté vykonání, kde se pošlou pouze data, která se na serveru dosadí na místo otazníků INSERT INTO table (name, price) VALUES (?, ?) Příprava dotazu, místo hodnot otazníky
  44. 45. <ul>Díky za pozornost! Michal Špaček, @spazef0rze http://jobs.skype.com/ </ul>

×