Disabling modules - performance improvement?

  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.


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.