This question has 2 parts:

  1. Does disabling core modules improve overall performance of the store and if so, do they need disabled in the admin (i.e. disable frontend output) or disabled via config.xml for this performance improvement to be seen.

  2. If there is a performance improvement to be gained, which modules on a stock, CE 1.7.0.2 build can be safely disabled, via the method answered in part 1.

up vote 27 down vote accepted
  1. Yes it does. First of all, less modules means less code to (potentially) load and process. Next to that, a lot of modules, like for example the Mage_Rss module run a lot of code in the background like forcing reindexes on certain events.

    On the method best to use: disabling a module using System > Configuration > Advanced only suppresses the output of a module while still including the code of that Module in the shop. This is handy when you don't want a modules functionality but you need it's Models or Blocks for example because other (3th party) extensions depend on it. Disabling it using app/etc/modules/*.xml will completely remove it from the installation so performance wise this is the best option.

  2. I usually disable the following extension via XMl

    • Mage_Rss
    • Mage_PayPalUk
    • Mage_Tag (when not used in a project)
    • Mage_Poll (cause who uses polls anyway)
    • Phoenix_Moneybookers
    • Mage_Sendfriend
    • Mage_Rating (when not used in a project)
    • Mage_Bundle (again, if not required by client)
    • Mage_Downloadable (see above)

    and via System > Congiguration > Advanced the Mage_Adminnotification which suppresses those annoying popups in the backend.

    You can probably disable several more core extensions depending on what you're using or not. Just make sure that you don't compromise the stability of Magento. I guess this will take some trial and error.

  • 1
    Is there a way to disable them without changing the core xml files? – Marty Wallace Sep 30 '13 at 18:59
  • If it doesn't already have it's own XML file you can go ahead and create it, just create app/etc/module/Mage_Rss.xml for example and just be sure you add the codePool (core) and active (false) tag – Sander Mangel Sep 30 '13 at 19:00
  • I maybe confused things just then :). I mean to say that can i disable Mage_Centinel for example, without amending Mage_Centinel.xml i.e. use my own xml file to disable it. That way I would not be changing core code – Marty Wallace Sep 30 '13 at 19:06
  • Ahhh okay, I misunderstood. well you probably can disable it since all XML files are merged into one so if you add it in your extensions config.xml tag it should get pickup up but in my opinion it's 'cleaner' to do it from the app/etc/modules directory. But thats just me :) – Sander Mangel Sep 30 '13 at 19:26
  • 2
    Before disabling polls remember to delete the sample poll "Choose colors"; I've found third-party modules who can show poll contents even if the module is disabled. – lrkwz Sep 29 '15 at 9:52

Despite being late with an answer I would like to answer the question

  1. You gain even more performance if you physically remove the files.
  2. Simply all of them, except Mage_Core ;-)

But to disable tight couple modules you need to install another module which takes care that nothing will break. Therefore I've developed: https://github.com/Zookal/magento-mock

Zookal Mock: Transparent auto-detecting of disabled core modules and extensions and providing mock objects for not breaking Magento. Nothing to configure. No class rewrites. Only one observer. Works out of the box. You can even physically remove the files!

E.g. when you disable Mage_Wishlist or Mage_Newsletter your Backend -> Customer -> Customer edit will throw weird errors. Therefore use the Mock extension!

You can even uninstall old Payment modules which have entries in the sales_flat_order_payment table and normally break your Backend -> Sales -> Order View but the Mock extension has a transparent work around for you.

One thing to consider: It does not work on command line.

See Marius' answer regarding a simple and quick XML way of disabling modules. Create a single file zzz_Disabled_Modules.xml with the contents

<?xml version="1.0"?> 
<config>
    <modules>
        <Mage_Rss>
            <active>false</active>
        </Mage_Rss>
        <Mage_PaypalUk>
           <active>false</active>
        </Mage_PaypalUk>
        <Phoenix_Moneybookers>
            <active>false</active>
        </Phoenix_Moneybookers>
        <!-- all other modules here -->
    </modules>
</config>

Imagine! A .gitignore for Magento modules!

With this you can easily see which modules you have enabled/disabled at a glance.

As @Sander Mangel says disabling modules defiantly can have a big performance gain, although what you disable really is a store-by-store thing. There's normally plenty that you don't need though. If you're not using whishlist disabling Mage_Wishlist makes quite a difference.

Another gain is disabling Mage_Log. This may be better done through local.xml though.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.