We are often asked about general performance issues when Simple:Press is installed. Hopefully, some of those questions will be answered below. But first, a quick word on our development policy.
A large portion of our development time is spent on optimisation, both of our code and our database queries. It tends to be the first task – and sometimes the longest task – of each major development cycle. Wherever possible, calls to the database are minimised, functions re-written and code pruned. This is an ongoing process and will continue with every release.
That being said it has to be recognised that Simple:Press Forum is a large and feature rich plugin. Unlike a blog – which tends to be fairly static, a forum is also dynamic and a busy forum can have changes being made to it on a continual basis. Overall performance and database activity is therefore a balancing act between what features users want and request and how those features can be integrated into the whole with as little overhead as possible.
Simple:Press V5.0 was a complete rewrite of the entire codebase with performance a key component and objective. It is noticeably faster than previous versions as well as slimmer.
We receive a huge number of requests for new features. We do not include them all but do consider any feature that is requested multiple times and many that just make plain sense. But each and every new feature will add more code and will almost certainly require new database queries. That is the cost. This does not necessarily result in a slow down of the forum but it does make the codebase bigger.
With 5.0, we have introduced plugins for Simple:Press. This caters well for many of the old core features that were not universally used and allowed us to remove large chunks of code from the core and place them in to plugins. This means the core is much smaller and leaner and will therefore load and perform better. You only need to grab and use the plugins that you want. Many new features, unless benefiting the vast majority of the community will be added as plugins in the future.
If, as a user, you want a very lightweight and bare-bones forum then the core Simple:Press can still be your choice. If, on the other hand, you want the features that some of the Simple:Press plugins have to offer then you have to accept an increase in database activity and codebase.
Yes – it is a lot of files. But don’t worry – they are not all loaded all of the time. Wherever possible we only load those code files that are necessary for whatever view is being displayed or operation being carried out. We have also taken great care to not load up unnecessary files and scripts in non-forum pages.
Additionally, as the Simple:Press development progresses, we are using more AJAX type operations so that data can be presented when the user wants it – not loaded in the background ready. This helps the size of the pages being loaded.
There are a lot of misconceptions regarding the number of database queries any plugin can make. Simple:Press Forum does add a noticeable amount of new queries to your site and this is a consequence of being a feature rich plugin and also having a dynamic data requirement where database records are constantly being updated. Version 5.0 has cut down the number of queries being made substantially from prior versions.
That being said, there are two main points to make here. The first is that MySQL is a very robust database engine that can handle large numbers of queries on huge volumes of data with relative ease. A standard WordPress blog hardly scratches the surface of MySQL’s capabilities. Additionally, MySQL is very good at caching it’s data and on most installations the vast majority of data will actually be retrieved from memory – especially those queries that are repeatedly run. The bottom line is that the effect on overall performance should be marginal.
When 5.0 was rewritten, every query in Simple:Press was touched and many, many were optimized for performance.
Quite a lot actually. But start by considering the following points: