13 Tips to Speed up Magento Performance
Magento, owned by Adobe, is one of the most widely used ecommerce platforms today that people to choose to grown their online business. In this post, we will discuss tips on how to speed up Magento performance to ensure you don't lose any sales due to high abandonment rate or an unsatisfying user experience.
When it comes to choosing an ecommerce CMS or platform you have a lot of options. You could go with WooCommerce which is an extension of WordPress, Shopify, Volusion, and a number of other ones. The reason a lot of businesses choose Magento is because it is a very robust platform with a high level of functionality and customizability. It is highly scalable, meaning there would be no need to change to a different platform later on as you scale up.
According to BuiltWith, 16% of the top 100,000 ecommerce websites are using Magento, 22% if we also include Magento Enterprise. And WooCommerce comes in at a close second with 12%.
According to Google Trends, the activity around Magento is still very high, since it's official release in 2008. However, WooCommerce and Shopify have seen very rapid and consistent growth over the past few years so it will be interesting to see where Magento will be in the next five years.
Speed up Magento
Magento and WooCommerce are both known for having issues with speed and their performance degrading over time. Making sure your ecommerce solution is running fast is one of the most important factors to your sales, SEO rankings, abandonment rate, and the shoppers overall user experience.
If an ecommerce site is making $100,000 per day, a 1 second page delay could potentially cost you $2.5 million in lost sales every year.
Follow these tips below on how to speed up Magento and keep it running fast to ensure return shoppers and sales.
1. Latest version
It is very important that you are always running the latest version of Magento as updates generally contain bug fixes and performance improvements. There are three main steps when it comes to upgrading a Magento installation.
- Install a fresh version the Magento file tree (the version you are trying to upgrade to).
- Run the installer from the file tree on top of the outdated database (thereby upgrading the database).
- Move over themes and custom extensions from the old version to the current version.
Upgrading Magento is a little more work than upgrading WooCommerce or Shopify, but Magento has a good in-depth tutorial on how to fully upgrade Magento.
Magento also does a good job of notifying you of important updates that become available within your notifications/messages inbox (depending on which version of Magento you're using.
2. Content delivery network
KeyCDN has a very simple [integration with Magento]/support/magento-cdn-integration) and Magento 2. Both can be setup with HTTP and HTTPS configurations.
3. Utilize caching
There are many forms of caching that can be implemented with Magento. Many people have great success combining NGINX + APC + Memcache + Varnish caching.
Magento also comes with a built-in caching module as well, but third party solutions seem to achieve better results. Make sure all Cache Types are enabled by navigating to "System" > "Cache Management".
Another form of caching you can leverage is browser caching. See the following snippets you can add to your
.htaccess file, such as enabling Gzip compression and adding expire headers. Magento2 ships with an .htaccess file called
.htaccess.sample which you can use to achieve the same goal. However, if you're using an older version of Magento you may need to add these snippets manually if not already defined.
Gzip compresses web pages and style sheets at the server level before sending them over to the browser.
Expire headers tell the browser whether they should request a file from the server or grab it from the browser's cache.
<ifModule mod_expires.c> ExpiresActive On ############################################ ## Add default Expires header ## http://developer.yahoo.com/performance/rules.html#expires <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> ExpiresDefault "access plus 1 year" </FilesMatch> </ifModule>
Page caching is one of the most powerful ways to speed up Magento. Load is taken off from the webserver by serving pages already visited before from cache, which makes it a lot faster.
There are a few page caching extensions available for Magento, we recommend one of the following:
LiteSpeed also offers a product called LiteMage which uses what they call "hole punching." It designates certain areas of a page that can change and then the rest is served from cache.
4. Enable flat catalog
Magento uses the EAV model (entity attribute value) to store customer and product data. Enabling the flat catalog for categories and products merges product data into one table, thereby improving performance by responding to MySQL queries faster. If your ecommerce store has more than 1000 products, this can very beneficial.
- Navigate to "Stores" > "Configuration" > "Catalog."
- Under "Storefront" change "Use Flat Catalog Category" and "Use Flat Catalog Product" to "Yes."
- Click on "Save Config."
- Clear the cache. The recommended way to do this is to delete everything from the
/var/cachedirectory. You can also do it by navigating to "System" > "Cache Management" and clicking on "Flush Cache Storage" which is equivalent to deleting all the cache.
5. Image optimization
As we mentioned in a previous post on lossless image compression, on average 56 percent of a website's page weight is made up of images. Optimizing your product images can dramatically increase the speed of your pages as this decreases their download times. You can compress them before uploading them using a tool like PhotoShop or there are a number of extensions you can use to auto-optimize them. For Magento version 2 users, the following extensions are available.
GTmetrix also has a Magento extension called GTspeed. It includes image optimization as well as CSS/JS concatenation and minification. Take a look at the difference on a stock Magento install.
Additionally, for Magento 2 users, the Image Optimizer for Magento 2 is an option.
- Navigate to "System" > "Advanced" > "Developer."
- After combining these files, you will need to clear the cache. Follow the process we mentioned earlier.
7. Enable Magento compilation (only Magento version <2)
Magento has a compilation feature which has been reported to sometimes give up to a 50% performance boost. By default, Magento's application files are searched in a certain order everytime the page loads, which results in a lot of filesystem reads. The Magento compiler reduces these reads by copying all of these files into a single include directory and also caches ones that are used more frequently.
- Navigate to "System" > "Tools" > "Compilation."
- Click on "Run Compilation Process."
8. Clean up Magento database and logs
By default, Magento keeps logs up to 180 days. This can result in your database growing quite large. You change it to something smaller like two weeks (14 days) to save space.
- Navigate to "Stores" > "Configuration" > "Advanced"> "System" > "Log."
- Under "Save Log, Days" change it to 14 days, or whatever you prefer.
- Click on "Save Config."
You can also manually clean up your database by emptying the log tables.
- In phpMyAdmin select all of the log_% tables and select "Empty" from the drop down box.
- Click on "Yes" when it asks you if you really want to TRUNCATE the tables.
9. Fewer extensions and modules
You can also disable modules that you don't use.
- Navigate to "Stores" > "Configuration" > "Advanced"> "Advanced".
- On the modules you just need to select "Disable" from the drop down box and click on "Save Config."
10. MySQL configuration
MySQL has its own "query cache" that it uses in Magento to help generate dynamic pages and content while improving performance. These are some recommends settings for your
query_cache_type = 1 query_cache_size = 32M query_cache_limit = 2M
And also a recommended setting for
php_value memory_limit 512M
11. Update indexes
Magento updates indexes on every object store by default, but in some cases manual updates are required. Indexes are used to speed up MySQL queries.
- Navigate to "System" > "Index Management."
- Select all of the indexes (or the ones you want to update), choose "Reindex Data" from the drop down and click "Submit."
12. PHP accelerators
Using a PHP accelerator is another form of caching. They increase performance of PHP scripts by caching them in their compiled state. You can use a PHP accelerator like APC, ZendOptimizer+ or Xcache.
- APC - http://pecl.php.net/package/APC
- Xcache - http://xcache.lighttpd.net
- eAccelerator - http://eaccelerator.net
13. Choose fast web hosting
And last but not least, choosing a reliable and fast web host can be one of the most important decisions you will make when trying to improve Magento performance. We recommend staying away from cheap shared hosting as they tend to overcrowd their servers and you will end up sharing resources between hundreds of people. We suggest going with a VPS like DigitalOcean, Linode, or Vultr. The reason is because you will be in complete control of your resources. And if you aren't as tech savvy or don't want to manage your servers via CLI, ServerPilot is a great control panel alternative which works with Magento and the VPS providers mentioned above.
As you can see there are many ways you can speed up your Magento ecommerce site. From implementing a CDN to caching, enabling flat catalog, image optimization, merging CSS and JS files, using the Magento Compiler, and cleaning up your database. Also having a good web host is equally important.
Do you have another way to speed up Magento that we missed? We would love to hear about it below in the comments.