Two very simple additions to 2.2 Milestone 3 have ended up to be important features of the 2.2 development release cycle.
The Service Modules implementation allows features to be implemented at the core level, but removes the bloat of unneeded database queries and included files when the service module has been disabled.
There are currently 13 service modules in the CVS development repository that will become available for the 2.2 Milestone 3 release, and include:
- Category Path
- Output Compression
- Search Engine Friendly URLs
- Simple Counter
- Who’s Online
Keeping in spirit of the project, all features are enabled by default to demonstrate what the project release is capable of doing on new installations.
In the current CVS development version, there are 58 database queries being made on the front index page. Disabling all but the Debug service module brings this down to 31 database queries.
A feature that contemplates the Service Modules implementation, but is available throughout the whole core codebase, is the caching implementation with the Cache class.
Previously the caching implementations in project releases concentrated on caching HTML blocks, which included database query result sets. The disadvantage of this method was that it was only used when cookies were enabled to prevent the session ID from being included in any http links within the cached HTML block.
The focus of caching HTML blocks has changed with the new caching implementation, where only database query result sets are cached, and easily allows the display format to be changed on-the-fly via templates, without having the need to create multiple template HTML cache blocks as previously required.
This also removed the disadvantage of caching session IDs as the caching is done at the database query result set level instead of at the HTML level.
Combining both Service Modules and Cache implementations brings the database queries on the index page further down to 31 with all Service Modules enabled, and down to 5 with all disabled (apart from the Debug Service Module).
This is just a sign as what to expect for the upcoming 2.2 Milestone 3 release, and ultimately the 2.2 release 8)