V dnešní době by stránka měla být kompletně vykreslená do 2 vteřin. Pokud se tak nestane pak netrpělivost zákazníka roste a zvyšuje se šance je opuštění.
Nějaký ten pátek (cca 3 roky) zpět jsem položil na SO (http://stackoverflow.com/questions/9216743/tweaking-magento-for-performance) dotaz co všechno je potřeba poladit a nastavit, aby člověk dostal z hostingu a Magenta co nejrychleší odezvu a minimalizoval šanci, že zákazník z webu odejde jinam.
Následuje shrnutí co je dobré vzít v úvahu při lazení pro výkon. Body nejsou setřízené.
Serverová konfigurace
- místo Apache je lepší použít Nginx, litespeed.
- použít APC nebo ekvivalent pro PHP
- zapněte kompresy v .htaccess (mod_gzip pro Apache 1.3, mod_deflate pro Apache 2, pro nginx http://nginx.com/resources/admin-guide/compression-and-decompression/)
- session soubory uložit do RAM (přes tmpfs) nebo použít redis databázi
- zapněte Apache KeepAlives
- pagespeed (https://developers.google.com/speed/pagespeed/)
- používejte PHP 5.3 a vyšší
- odinstalujte xdebug nebo zend debugger na produkčním prostředí
MySQL konfigurace
- zapnout query cache
Magento konfigurace
- určitě mít zaplý flat catalog
- pokud je to možné tak použít full-page-caching
- zapnutý compiler mode
- spojení všech CSS souborů do jednoho a JS souborů do jednoho souboru (merge)
- smazat všechny website+store view, které nepoužíváte
- smazat všechna nepoužívaná košíková pravidla
- používat rozumně veliké obrázky
- minimalizujte počet skupin zákazníků
- všechny plánované úlohy by měly běhat špičku pokud je to možné
- ujistěte se, že cron promazáva logy uložené v databázi
- odstraňte Admin notification modul.
Magento coding style
- odstranit všechny moduly a rozšíření, která se nepužívají odstraněním XML souborů (v app/etc/modules. Zakázat modul přes backend nestačí
- používat ajax, kde to je jenom možné
- načís CMS blok zabere více času než Magento blok a zpracování šablony, vyhněte se použítí CMS bloků, pokud nemá být obsah nijak modifikován
- nepoužívejte $collection->count() a místo toho použiteje $collection->getSize()
- minimalizujte počet atributů dostupných ve vyhledávání
- použijte Apache SORL, toto je dostupné v EE verzi, CE verze vyžaduje rozšíření
- použijte getChildHtml(‘childName’) namísto vytváření bloku přímo v .phtml šabloně, protože toto zkontroluje zda výstup není již uložený v magento cache
- zkontrolujte layout xml na bloky, které jsou umístěné v default handle, ale vykreslují se pouze pro specifický layout handle. Takové bloky přesuňte z defaultu do specifických.
CSS/HTML coding style
- používat css sprite pro obrázky
- HTML výstup by měl být W3C compliant (validní), né vždy lze tohoto dosáhnout, např. google page speed generuje nevalidní html5 kvůli úspoře každého bajtu
Další doporučení
- použijte rozumně content delivery network (CDN)