Magento Site Performance Optimization
2010-09-10 22:21
573 查看
http://www.yireo.com/tutorials/magento/magento-sp
While many blaim Magento for being slow, it is possible to make the Magento e-commerce application lightning fast. This requires first of all funding, because you will need to add sufficient system resources (CPU, memory) to Magento to make it run properly. But it also requires time and knowledge. For the last part - knowledge - this list helps you further.
Enable Magento caching
Compress images
Disable unneeded Magento modules
Enable flat catalogs for smaller webshops
W3C compliance
Compress output in general
Configure PHP options
Session storage
Use a PHP accelerator
Tune PHP realpath_cache
Use Apache mod_expires
Merge CSS and JavaScript
Use Magento Compiler module
MySQL optimization
Serve static content through a CDN
Be carefull with HTTPS
Magento in the cloud
Memory-based filesystem for dynamic data
Disable Apache htaccess-files
Use Nginx or Litespeed
Use lazyload for images
Minimize Apache logging
Disable local Magento modules
Besides merging, crunching is also an option offered by FooMan Speedster: It removes whitespaces from the output, but when compression is already applied to CSS, this option is less needed.
While many blaim Magento for being slow, it is possible to make the Magento e-commerce application lightning fast. This requires first of all funding, because you will need to add sufficient system resources (CPU, memory) to Magento to make it run properly. But it also requires time and knowledge. For the last part - knowledge - this list helps you further.
Enable Magento caching
Compress images
Disable unneeded Magento modules
Enable flat catalogs for smaller webshops
W3C compliance
Compress output in general
Configure PHP options
Session storage
Use a PHP accelerator
Tune PHP realpath_cache
Use Apache mod_expires
Merge CSS and JavaScript
Use Magento Compiler module
MySQL optimization
Serve static content through a CDN
Be carefull with HTTPS
Magento in the cloud
Memory-based filesystem for dynamic data
Disable Apache htaccess-files
Use Nginx or Litespeed
Use lazyload for images
Minimize Apache logging
Disable local Magento modules
Enable Magento caching
This is ofcourse the first step in optimization: Enable all the available caches in the Magento Admin Panel.Compress images
Many people forget that images (PNG, JPG) can be compressed, which lowers the bandwidth between the browser and the webserver. Not only the images used by the Magento skin need optimizing, but catalog images as well. Various tools allow you to compress batches of images.Disable unneeded Magento modules
By disabling Magento modules that you do not need, less resources are needed - as simple as that. Modules could be disabled through the configuration in the Magento Admin Panel, or by editing XML-files in app/etc/modules.Enable flat catalogs for smaller webshops
For smaller webshops switching from the complex EAV-structure to a flat catalog could save time. This optimization is dubious and depends on many parameters, so do not take this step lightly.W3C compliance
While it could be argued that this is less important with the coming of HTML5, it is still a fact that if your webpages are filled with ugly errors, the browser will have a harder time interpreting it. If you stick to W3C compliance, it is made sure the browser engine has an easy job parsing your HTML-code.Compress output in general
By enabling the PHP-setting zlib.output_compression the output generated by PHP is compressed when sent to the browser. This saves bandwidth. Instead of using this, you could use the Apache mod_deflate module as well, which allows also for compression of non-PHP output (CSS, JavaScript, other plain text-files).Configure PHP options
Most PHP settings actually do not influence the performance of Magento, but just set certain limits. For instance, settings like memory_limit and max_execution_time do not increase the page load but just make sure that certain actions do not timeout or run into memory problems.Session storage
With Magento, sessions could be stored in files or in the database (by configuring app/etc/local.xml). Which option performs best, really depends on how the hosting environment is setup. If MySQL databases perform well, session storage in the database could benefit your site. But if MySQL is not setup correctly, the best choice might be files.Use a PHP accelerator
By opcode caching, PHP-execution could be fastened. There are various PHP accelerators doing this job (APC, ZendOptimizer+, eAccelerator, XCache). Both APC and ZendOptimizer+ are working flawless with MagentoTM.Tune PHP realpath_cache
By tuning the PHP realpath_cache_size to for instance 128K (default is 16K) and the realpath_cache_ttl to 86400, things might be speeding up. Make sure you don't run out of memory, because every Apache child will consume the configured caching size.Use Apache mod_expires
By telling the browser which files to keep in cache for how long, you can optimize the browser cache. For instance, JavaScript files tend to change much less then CSS files (at least in the first stages of the site), but perhaps after the site is running smooth for some months you can maximize the expiration date.Merge CSS and JavaScript
By merging all CSS and JavaScript files together as one big file, only one single HTTP-request is needed by the browser to fetch this content. This saves bandwidth. For this merging, the FooMan Speedster module could be used. MagentoTM 1.4 contains an option to merge CSS, while JavaScript-files are merged by default.Besides merging, crunching is also an option offered by FooMan Speedster: It removes whitespaces from the output, but when compression is already applied to CSS, this option is less needed.
Use Magento Compiler module
The Magento Compiler module limits the number of directories that PHP has to search through when looking for PHP-files. This decreases the PHP execution-time, which speeds up the MagentoTM application in general.MySQL optimization
The default MySQL setup is a lot of times sufficient to run a general hosting environment, but not all optimized for Magento. Tuning settings like query_cache_size could dramatically increase performance, but is also dangerous because it hugely depends on other variables (number of databases, number of tables per database, number of queries, peak usage).Serve static content through a CDN
Static content like images, CSS-stylesheets or JavaScript-files, could be served through other servers that are more optimized for static content. For instance, a CDN could be used so that the static content is always served from a location that is closest to the visitor. This is vital for webshops serving customers worldwide.Be carefull with HTTPS
Every time you use SSL between webserver and browser, the process of encrypting and decrypting is added on both sides. Also there is a slight overhead in bandwidth. The Magento site runs slightly faster if you disable SSL for all or just a few pages. However, this "win" is so small compared to the other wins on this page, that it should only be handled with caution. The gained bandwidth is non-vital, while almost all computers nowadays have CPU-power with which the encryption/decryption process takes place in microseconds.Magento in the cloud
While CDNs could be used to optimize the bandwidth for static content, the Magento application could also be optimized in the same way by using cloud computing.Memory-based filesystem for dynamic data
By storing dynamic data (var/cache, var/session) on a memory-based filesystem like RAMdisk or tmpfs, the disk I/O is decreased.Disable Apache htaccess-files
When allowing the usage of htaccess-files, Apache needs to inspect every directory in its path to see if an htaccess-file is present. By moving the Apache configuration-directives from the htaccess-file to the VirtualHost configuration-file, and disabling htaccess-files all together, the Apache execution-time is decreased. This tip probably applies in most cases only to dedicated servers.Use Nginx or Litespeed
While the Apache webserver is very flexible in its configurations, there are other webservers that are better optimized regarding memory usage: By replacing Apache with either Nginx or Litespeed, you could speed up the Magento scripts even more. Both webservers require manual configuration to allow for SEF URLs.Use lazyload for images
When a page is loading, a visitor is often waiting for images on that page to load. Depending on the number and size of these images, this can take some time. Instead of loading images at once when the page is loaded, you can also add the LazyLoad JavaScript effect that makes sure only visible images (within the browser screen) are loaded, while remaining images are only loaded once the visitor scrolls down.Minimize Apache logging
If Apache logging is minimized, less file operations are needed for every incoming request. Ofcourse less logging also means less insight when something goes wrong. An alternative is to optimize the filesystem on which Apache logs are stored. By default, Apache logs to the /var filesystem - but there's no need to enable things like journalling for that filesystem.Disable local Magento modules
If your site does not need local Magento modules, you could choose to skip the search for local modules alltogether. Within the app/etc/local.xml file, you will find an XML-tag allowing you to do so.相关文章推荐
- 《ASP.NET Site Performance Secrets》读书笔记
- Notes on <High Performance MySQL> -- Ch7: Operating System and Hardware Optimization
- InnoDB Performance Optimization
- C performance Optimization
- Goal driven performance optimization
- Magento performance testing guidelines
- Advanced NDK(Pro Android Apps Performance Optimization)
- Speed Up Your Site: Web Site Optimization
- Pro Java EE 5 Performance Management and Optimization
- javaperformanceoptimization
- MySQL ORDER BY LIMIT Performance Optimization
- Performance and Optimization For Mecanim[Unity]
- Using Memory Efficiently(Pro Android Apps Performance Optimization)
- NUMA Performance Optimization (文档 ID 1488175.1)
- Performance Optimization Articles
- 《.NET Performance Testing and Optimization》学习笔记
- C++ Footprint and Performance Optimization (Sams Professional) by Rene Alexander
- Optimizing Java Code(Pro Android Apps Performance Optimization)
- 《Pro_iOS_App_Performance_Optimization》翻译稿
- Asp.net MVC 4 and .Net 4.5 Bundling and Minification(Web Site Optimization)