I was thinking about performance. Some thoughts, the more modules the slower the site loads. Each module adds code that must be run each time a page is loaded (is that correct?) My next question was does PHP scan modules that are not activated? (I don't think it does but correct me if I am wrong.) Another thing to consider is what each module is doing. Is it causing the Drupal to check for permissions, etc.
A solution I was kicking around in my head was creating a mulit-site install that shares one DB. For example, lets say a website is going to have a main blog, a forum, and groups. Each could be located at blog. groups. and forums. With each site sharing user tables. This would give fluid use from a end user prospective but it would allow each site to only load the necessary modules to perform its task.
So the the blog site is not affected by the lines of code from OG or from Adv forums, etc.
Does my theory hold water?
Comments
Sounds correct
I haven't tried a multi-site sharing a single database, but if you had a lot of heavy modules, that would probably be the way to go, with your commerce stuff at shop.mydomain.com, etc. You wouldn't easily be able to share your css and javascript files between sites though, certainly not if they were being aggregated. Drupal 7 has better loading of modules than Drupal 6, so you might find that helps a lot with performance. You could also try various caching options, like the Boost module (that creates temporary html files).
That's a good point regarding
That's a good point regarding aggregation. The aggregator would pull from the same files though. There would only be one theme folder in /sites/all and the javascript files would be the same from the Misc folder. So from our end of tweaking files we would still only need one set.
Would multiple aggregation files be stored on the client or would Drupal have to create new ones every time a user popped back and subdomains? This could cause performance issues, especially if the user had different sections of the site opened in different tabs.