Delete unused Magento extensions/modules
Remove all that is not essential.
- Question the use of every extension > Needed at all? Needed now? Maybe later? Delete ALL unused extensions/modules (don’t just disable, because that won’t prevent execution of the code). Most Magento sites have 5-10 extra modules. More than 30 extra modules will most likely slow your site down tremendously.
- Throttle Search Engines!
- Throttle Google through Google Webmasters.
- Add a robots.txt that limits Google and other search engines and bots from indexing.
- Prevent duplicate content with canonical URL (This saves CPU):
- 1. Allow: domain.com/product.html
- 2. Disallow: domain.com/category1/product.html
- 3. Disallow: domain.com/catalog/product/view/id/1/
- 4. Disallow: domain.com/catalog/product/view/id/1/category/1/
- Try to add nofollow links for URLs that are not relevant to Search Engines: Yoast is a likely module.
- Create a sitemap to help bots crawl the right pages.
- Verify that your site works independently from external calls: do not connect to Facebook, Twitter or other external sites. Do not connect to an inventory system realtime with every pageview, but do it asynchronously in the background (using cron). Network calls add lots lag. What happens if the other site is down? Your site is slowed down for 5 seconds on each page load and the server grinds to a halt.
- Check all modules that are installed. If remote resources are needed. Cache them on disk and download them through either the admin panel or the shell server.
Optimize your Magento shop before going live
Make sure everything works perfect.
- Eliminate all use of flock(). Imagine a bottle, look at it’s neck, this is flock(). Decentralize if possible.
- Run test through PageSpeed. Optimize!
- Run test through YSlow. Optimize!
- Make sure 404’s are not handled by Magento.
- Leverage browser caching through caching optimization. See YSlow to see what the browser still downloads. Remove ETags, add Expire headers. This clears webserver slots for other customers.
- Minimize or eliminate Ioncube loading, see Byte Blog.
Make sure Magento is as light and fast as possible before going live
Setting speed options makes Magento 5-10 times faster and lighter.
- Enable all the cache options in Magento.
- Clear /var/cache
- Make sure all cache goes to MySQL, not to disk (check var/ dirs).
- Eliminate disk i/o alltogether through Full Page Caching. Use a Full Page Cache (FPC) mechanism (Magento Enterprise, Nitrogento).
- Test working of Full Page Cache and prime FPC.
- If you run on a dedicated server that features the APC cache, please make sure you enable and double check APC.
- Please test the working of APC just before going live. Often, last minute changes require you to disable APC. In the heat of the moment, developers forget to turn it back on.
- Prime APC before launching.
- Use JPG’s in stead of PNG’s for products images. They’re smaller and generating takes less time (Thus: CPU & Diskpower).
Test the Magento functionality and performance extensively
Extensive testing ensures success, so make sure you test your shop thoroughly by taking the following steps:
- Communicate with Byte on how and when to run benchmarks (!).
- Pre-generate image families. Are all images pre-generated?
- Test performance/usage per hit/visit. Get BPU below 0.20 per visitor.
- Run benchmark on many different pages (generate list of all URLs, randomize, put in siege). Not only on 5-20 pages. Good benchmark service is: Browsermob.
- Run benchmarks WHILE doing import/tests/administrative tasks, to simulate real life situation.
- Doublecheck whether or not the back-end capacity is sufficient to support all orders in peak situations (For instance during the ‘sales’ period), be it SAP, MSSQL or another system.
The day your Magento shop goes live
If you’ve tested your shop and are satisfied with everything, you can go live:
- Communicate well: write a clear and simple plan for going live. Communicate the plan with both customer and Byte. Choose fixed dates for testing and going live. Let your implementation partner appoint a technical contact (this should not be a programmer, but should be knowledgable). Coordinate a technical contact at Byte as well. Check your plan with your Byte contact.
- Choose your Go-Live time well. Choose a relatively dull moment (monday). This leaves you some time to iron out the most critical bugs with relatively few users on the server. Then launch the campaign and bask in the attention while solving the last few bugs.
- Domain name / DNS > make sure DNS is at Byte. This helps us to scale your application. If we do not manage the DNS, we cannot relocate your application. In times of need, Byte cannot help when things go wrong if you manage your own DNS.
- Disk usage must be monitored (#GB, logs, caching). Make sure you have enough diskspace in your hosting plan. Make sure you check DB space and webspace.
- Never combine the Go-Live with any campaigns. Do not run actions while going live. Go for a week in “first launch” and time campains for the next week, when the dust settles.
- Go live with a reduced amount of products and functions (beta period).
- Scaling down is easier that to scale up: start up with more nodes! Set up with a dedicated database cluster.
- Prepare a backup plan and have a “Please come back and leave your mail address here”-page ready.
- Prepare a communication strategy with Byte (who is the principal technical contact at implementation party, who is the technical contact at Byte?).
Keep it clean – Prepare all Magento maintenance tasks
Make sure your Magento shop stays clean and fast by preparing the following:
- Periodically clean your Magento installation: add the standard cronjobs on the shellserver
- Clean reports
- Reindex when business is slow (02:00 for example)
- Clean the databases
- Remove logs from disk, database
- Check the var/ dirs, they tend to clog up