Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Ing. Jan Mittner 15.12.2011. 1. Profiling aplikací 2. Zend_Cache 3. Optimalizace výkonu databáze 4. Optimalizace rychlosti načítání webu 5. Další tipy.

Podobné prezentace


Prezentace na téma: "Ing. Jan Mittner 15.12.2011. 1. Profiling aplikací 2. Zend_Cache 3. Optimalizace výkonu databáze 4. Optimalizace rychlosti načítání webu 5. Další tipy."— Transkript prezentace:

1 Ing. Jan Mittner 15.12.2011

2 1. Profiling aplikací 2. Zend_Cache 3. Optimalizace výkonu databáze 4. Optimalizace rychlosti načítání webu 5. Další tipy pro zrychlení ZF 2

3  nový plugin umožňující profiling  v konfiguraci profiler.enabled = 1  pro vypsání dát do URL ?profiler=1  vypisuje i log z databázového profileru

4  náročnost jednotlivých volaných SQL dotazů lze v Zendu profilovat (=měřit) prostřednictvím podkomponenty Zend_Db_Profiler  Db Profiler je schopen monitorovat veškeré volané SQL dotazy v rámci aplikace včetně délky jejich trvání, vstupních parametrů apod.  na základě získaného profilování lze optimalizovat počet dotazů a jejich výpočetní náročnost  výstupy z profilování lze mj. publikovat prostřednictvím Firebug rozšíření Firefoxu, resp. v kombinaci s rozšířením FirePHP, které je schopno do Firebugu dodávat data z logování na serveru  http://www.firephp.org/ http://www.firephp.org/  http://framework.zend.com/manual/en/zend.db.profiler.html http://framework.zend.com/manual/en/zend.db.profiler.html 4

5  Zend komponenta zajišťující cachování dat s cílem optimalizace výkonu aplikace  komponenta nabízí uložení vybraných dat do cache  u cache je možné nastavit libovolnou i neomezenou trvanlivost či cache v závislosti na aktualizaci cachovaných dat ad-hoc mazat  http://framework.zend.com/manual/en/zend.cache.html http://framework.zend.com/manual/en/zend.cache.html 5

6  cachovat můžeme různé věci – tzv. frontendy  core - téměř libovolná data  output - výstup akce v rámci MVC  page - celou stránku  cache můžeme ukládat na různá místa – tzv. backendy  soubory  databáze  memcached  invalidace cache  vypršením expirační doby  pomocí konkrétního cache id  pomocí tagů – doporučuji ▪ ideálně pomocí observeru na dané entitě

7  ORM v Zendu lze zrychlit prostřednictvím cachování metadat jednotlivých datových entit  http://framework.zend.com/manual/en/zend.db.table.html#zend.db.tabl e.metadata.caching http://framework.zend.com/manual/en/zend.db.table.html#zend.db.tabl e.metadata.caching  Zend_Db_Table_Abstract::setDefaultMetadataCache()  kromě toho lze cache využít na řadu jiných komponent, které dokáže výrazně zrychlit  pluginy Zend_Loader_PluginLoader::setIncludeFileCache();  config  Zend_Date, Zend_Locale, Zend_Translate ▪ důrazně doporučuji cache používat

8  v bootstrapu se navěsí observer My_Cache na Product  obě třídy implementují příslušná rozhraní  když se jakkoliv změní objekt třídy Product, pošle všem svým observerům notifikaci  observer My_Cache si zjistí tzv. cache tagy daného produktu: např. „Product_123“, „Products“  invaliduje všechny cache záznamy s příslušnými tagy

9  Zend_Cache  implementujte cachování metody count v modelu Products ▪ využijte frontend Core ▪ nejdříve s nastavenou expirační dobou ▪ následně s využitím observeru cache na modelu  implementujte cachování ve vyhledávání produktů ▪ vyzkoušejte využít frontend Core – funguje? proč ano/ne? ▪ vyzkoušejte využijte frontend Output ▪ nejdříve s nastavenou expirační dobou ▪ následně s využitím observeru cache na modelu ▪ funguje správně vyhledávání? 9

10  vhodně zvolené databázové indexy pomáhají řádově snížit náročnost SELECT dotazů včetně joinování tabulek  můžete využít dotaz EXPLAIN SELECT...  pečlivě volte datové typy a jejich rozsahy jednotlivých sloupečků tabulek, při velkých objemech dat má optimalizace datových typů vliv na rychlost SELECT dotazů  v rámci složitějších případů je třeba nalézt rovnováhu mezi počtem SQL dotazů a jejich složitostí  někdy se vyplatí spíše řešit část datové vrstvy v aplikační rovině namísto složitých SQL dotazů, resp. velkého počtu dílčích dotazů  můžete využít speciálních rozšíření MySQL, např. Spatial Extension pro práci s body v rovině/prostoru  vyhýbejte se subselectům, používejte joiny  výrazně rychlejší, pokud jsou správné indexy 10

11  optimalizace logické vrstvy aplikace – nástroj Xdebug je schopen poskytnout profilování celé aplikace, čili informace o každém volání metody apod., jak byla náročná na CPU, RAM atd.  optimalizace javascriptu  pomocí nástrojů jako Firebug pro Firefox či Speed Tracer pro Google Chrome je možné profilovat výkon javascriptové vrstvy  pomocí obfuskátorů je možné minimalizovat velikost javascriptových souborů  optimalizace HTTP požadavků  http://blog.proteus.cz/optimalizace-rychlosti-webu-snizeni-poctu-http-pozadavku http://blog.proteus.cz/optimalizace-rychlosti-webu-snizeni-poctu-http-pozadavku  GZIP komprese je schopna výstupy serveru komprimovat do GZIP formátu, který si následně klient po doručení dekomprimuje – optimalizace objemu přenesených dat  dále mohou pomoci tzv. CSS sprity  více viz. http://developer.yahoo.com/performance/rules.htmlhttp://developer.yahoo.com/performance/rules.html 11


Stáhnout ppt "Ing. Jan Mittner 15.12.2011. 1. Profiling aplikací 2. Zend_Cache 3. Optimalizace výkonu databáze 4. Optimalizace rychlosti načítání webu 5. Další tipy."

Podobné prezentace


Reklamy Google