magento performance optimization 101
DESCRIPTION
A complete guide of optimizing Magento performance systematically, including LAMP(Linux, Apache, MySQL, PHP) optimization, tuning inside Magento and useful tools.TRANSCRIPT
![Page 2: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/2.jpg)
Performance paradigm
Basic rules of website performance
Optimize LAMP stack
Tweak Magento box
Tools & utilities
![Page 3: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/3.jpg)
Donald Knuth says “Premature optimization is the root of all evil”
... so choose the right time to start your optimization
Performance optimization is an ever going task
… so don’t think your optimization is “once for all”,
keep identifying the bottleneck of your site and
make improvement little by little
![Page 4: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/4.jpg)
![Page 5: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/5.jpg)
Process your page as quickly as
possible
Transfer your content as quickly
as possible
Render your page as quickly as
possible
Server side Network/HTTP Browser
Performance optimization
![Page 6: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/6.jpg)
#1: Make Fewer HTTP Requests #2: Use a Content Delivery Network #3: Add an Expires Header #4: Gzip Components #5: Put Stylesheets at the Top #6: Put Scripts at the Bottom #7: Avoid CSS Expressions #8: Make JavaScript and CSS External #9: Reduce DNS Lookups #10: Minify JavaScript #11: Avoid Redirects #12: Remove Duplicate Scripts #13: Configure Etags #14: Make AJAX Cacheable
---- High Performance Web Sites by Steve Souders
![Page 7: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/7.jpg)
![Page 8: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/8.jpg)
Install a minimal Linux distribution with necessary packages only, get rid of GUI, X-window etc.
Stop and disable the unused services, e.g. cups
Tweak kernel parameters:# echo '8192' > /proc/sys/fs/file-max
# echo '32768' > /proc/sys/fs/inode-max
# echo 268435456 >/proc/sys/kernel/shmall
# echo 268435456 >/proc/sys/kernel/shmmax
# ulimit -n 4096
![Page 9: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/9.jpg)
Compile required modules statically instead of DSO(Dynamic Shared Object), and disabled useless modules
./configure --prefix=/usr/local/apache2 --disable-status --disable-userdir --disable-threads --disable-ipv6 --enable-modules='ssl so rewrite deflate headers expires'
Why? http://httpd.apache.org/docs/2.2/dso.html#advantages
“DSO has the following disadvantages”
![Page 10: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/10.jpg)
Open .htaccess under Magento root directory, uncomment the directives between “<IfModulemod_deflate.c>” and “</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</IfModule>
![Page 11: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/11.jpg)
Open .htaccess and use following lines to replace the section between “<IfModule mod_expires.c>” and “</IfModule>”
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 1 month"
ExpiresByType text/plain "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>
![Page 12: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/12.jpg)
Open .httaccess and scroll to the end, uncomment the directive “FileETag none”, also add several lines more if you haven’t enabled KeepAlive in httpd.conf
FileETag None
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 5
![Page 13: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/13.jpg)
Open your my.cnf and update the following parameters:
skip-name-resolve
innodb_buffer_pool_size=768M
innodb_flush_log_at_trx_commit=2
As time goes by, use Tuning Primer to check your MySQL status and adjust configuration accordingly
![Page 14: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/14.jpg)
Similar as compiling Apache, compile required extensions statically and disable unused modules
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php --with-png-dir --with-jpeg-dir --with-gd --with-curl --with-zlib --enable-mbstring --with-mcrypt --with-freetype-dir=/usr --with-mysql=/usr/bin/mysql --with-mysqli --enable-pdo --with-pdo-mysql=/usr/bin/mysql --without-pdo-sqlite --with-openssl
![Page 15: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/15.jpg)
Download latest stable version from eaccelerator.net
Compile by enabling Shared Memory(for Magento cache, will talk about this later)
./configure --with-eaccelerator-shared-memory--enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
![Page 16: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/16.jpg)
Add an Expires Header
Gzip Components
Configure Etags
![Page 17: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/17.jpg)
A lightweight LAMP stack which can boost your website performance maximally
A fast-enough environment to run Magento efficiently
Let’s move to Magento box!
![Page 18: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/18.jpg)
![Page 19: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/19.jpg)
Cache with multiple adaptors
Compiler
Combine CSS & JS files
Parallel Downloads
![Page 20: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/20.jpg)
Go to Magento Admin Panel System Cache Management
All Cache Enable Layered Navigation Yes
Admin Panel System Configuration Catalog Frontend
Use Flat Catalog Category Yes Use Flat Catalog Product Yes
![Page 21: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/21.jpg)
Open {Magento_root}/app/etc/local.xml, add the following three lines
...
</resources>
<session_save><![CDATA[files]]></session_save>
<cache>
<backend>eaccelerator</backend>
</cache>
</global>
...
![Page 22: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/22.jpg)
Admin Panel System Tools Compilation Run Compilation Process
![Page 23: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/23.jpg)
Admin Panel System Configuration Developer
Javascript Settings Merge Javascript Files Yes
CSS Settings Merge CSS Files Yes
![Page 24: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/24.jpg)
Set up the following separate domains and point the VirtualHost DocumentRoot to corresponding paths under Magento folder
js.foo.com {Magento_root}/js media.foo.com {Magento_root}/media skin.foo.com {Magento_root}/skin
Then go to Admin Panel System Configuration Website Unsecure, and configure the Basic URLs accordingly
![Page 25: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/25.jpg)
Make Fewer HTTP Requests
Put Stylesheets at the Top
Make JavaScript and CSS External
Reduce DNS Lookups
Minify JavaScript
![Page 26: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/26.jpg)
Make Fewer HTTP Requests Add an Expires Header Gzip Components Put Stylesheets at the Top Avoid CSS Expressions (applies by default) Make JavaScript and CSS External Reduce DNS Lookups Minify JavaScript Avoid Redirects (applies by default) Remove Duplicate Scripts (applies by default) Configure Etags Make AJAX Cacheable (applies by default)
You’ve made 12/14! That’s GREAT enough for a site at the beginning, agree?
![Page 27: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/27.jpg)
Firebug http://getfirebug.com/
YSlow http://developer.yahoo.com/yslow/
Page Speed http://code.google.com/speed/page-speed/docs/using.html
Tuning Primer http://forge.mysql.com/projects/project.php?id=44
WebPagetest http://www.webpagetest.org/
![Page 28: Magento Performance Optimization 101](https://reader034.vdocuments.mx/reader034/viewer/2022052522/554bd2c1b4c905706a8b4dba/html5/thumbnails/28.jpg)
For more practices, go to Magento performance and optimization group