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.
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?
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.
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.
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.
Cachování
• Na mnoharů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í
Další zdroje
• PHPtriky
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/