Magento’s platform is attractive to large companies that are operating worldwide and selling online with their multi-store capabilities. It allows you to have different catalogs, descriptions, pricing, payment and shipping methods for different countries/websites. And all of this can be managed from one Magento back-end administration. It does, however, require a lot of server resources to run Magento multi-store, but the alternative would be to have several weaker servers running separate eCommerce shops, so this isn’t a huge issue.
The most common problem
Information management – for a beginner, the multi-store environment can be confusing at first. And to make a mistake while adding data to different stores is very easy. This data includes very specific information like product names, prices, discounts, etc. So, the best way to solve this problem is to remove human factor from information management or at least from critical parts like prices.
So what is the solution for this?
Price centralization. We were able to remove the human factor from price management for a Magento installation with 10 stores in it. Just imagine how long it would take for a person to add the price 10 times for the same product? A lot! Even when price management is automated and being imported from outside, someone still has to add those 10 prices to different stores somewhere.
To solve this problem we centralized price management in Magento. Only one – default price – is imported to Magento. Every store has additional configuration for price management – price coefficient. System now automatically multiplies imported default price with store coefficient. So, we basically cut the required job by 10 times.
Additional cron (automated) job was added to update store prices if it was changed during price import or store coefficient has changed.
So far so good, but if you have 30k sku’s and 10 stores, it means your Magento installation has to cope with ~300k products. For Magento that’s a lot, especially if your reindexing process is untouched. Magento requires reindexing after every bulk price change. Reindexing of 300k products may take around 1h depending on your server capabilities. Just imagine – a few hundred prices were updated to launch a new promotion and you have to wait ~1h to see the new prices. And prices change a lot – every hour.
This is where partial price reindexer was added. Magento no longer needed to reindex all products, just the ones that were changed. And this improvement reduced reindexing time from 1h to several seconds.
Next step – Varnish cache. Large Magento multi-store shops are usually equipped with Varnish cache in order to improve loading times. The easiest way to solve cache problem is to flush it completely. But with often price updates Varnish loses its meaning as cache engine. So, in order to keep Varnish cache benefits we have extended it and created a partial cache flush. After every price import, we gather every link that is connected to updated products and only flush cache for these links.
The main outcome
Improved work efficiency with minimal performance loss for updated product pages. That’s the way to improve your Magento multi-store environment.
Interested in learning more? Check out our other blog posts!