Successfully reported this slideshow.

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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

×