Výkonnost webových aplikací

751 views
679 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
751
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Výkonnost webových aplikací

  1. 1. Výkonnost webových aplikací Jan Tichý @jantichy
  2. 2. Sledujte nás• Prezentace: slideshare.net/mediocz• Twitter: @jantichy @mediocz @medioteka• Web: www.medio.cz blog.medio.cz akademie.medio.cz
  3. 3. Oblasti pro zlepšování výkonu• Návrh aplikace• Komunikace s klientem• Webový server a aplikace• Databáze• Cachování• Rozkládání zátěže
  4. 4. Návrh aplikace• Funkčnost aplikace• Volba vhodných prostředků• Architektura aplikace• Výkon versus přehlednost – Použít OOP? Jak moc dekomponovat? – Použít framework? Použít ORM?
  5. 5. Webový server• Hardware• Konfigurace serveru – KeepAliveTimeout, MaxClients, MaxRequestsPerChild – mod_deflate, mod_gunzip• Webserver, PHP – Apache, NGINX – APC/eAccelerator – opcode lokálně v paměti – HiPHoP – Zbytečné direktivy – magic quotes, register globals
  6. 6. Optimalizace aplikačního kódu• Kopírování dat vs. referencí• Kód se provádí v každém průchodu cyklem• Preferovat vestavěné funkce• Preferovat preg před ereg• Ukládání session do souborů je pomalé• Mikrooptimalizace - ternární operátor a další
  7. 7. Komunikace s klientem• Cachování, HTTP hlavičky – Last-Modified, If-Modified-Since, Expires – Etag, If-None-Match – Cache-Control, Vary• Klientské zpracování – Renderování v prohlížeči – Javascript – HTML a CSS, Sprites• Client-side aplikace
  8. 8. Databáze• Volba „databáze“ – MySQL, PostgreSQL, Redis, Mongo, CouchDB, ElasticSearch• Uzavírat spojení co nejdříve• Optimalizace dotazů - EXPLAIN, indexy• Používat insert s více hodnotami
  9. 9. Cachování• Na mnoha různých místech – databáze, agregované a předpočítané hodnoty, výsledky drahých operací a db dotazů, modelová data, šablony, fragmenty/bloky, celostránková cache• Různé nástroje – filesystém, Memcache/Membase, APC, Redis… – Varnish, NGINX+Memcache• Požadavky na architekturu aplikace• Problém s invalidací
  10. 10. Rozkládání zátěže• Výdejové front servery, statické servery, databázové servery, backend servery…• DNS roundrobin• Reverzní proxy – Varnish, Squid, Nginx• Uživatelská session data, dynamické bloky, A/B testování, trackovací parametry• Databáze: replikace, master-slave• Statický obsah: CDN
  11. 11. Další zdroje• PHP triky http://php.vrana.cz/• Školení výkonnosti webových aplikací http://www.michalspacek.cz/• Konzultace a analýzy k výkonnosti aplikací: http://www.medio.cz/
  12. 12. Díky za pozornost!Jan Tichý@jantichy

×