Simple Groupware Speedup techniques
Tree optimization
The tree is accelerated with a modified pre-order algorithm which makes it possible to get the right slice of the tree using one single query without recursion.
Output compression
The HTML output is automatically compressed. There is no need for any Apache modules. This reduces the bandwidth by factor 10-15 and results in page sizes around 4-8 KB (suitable for Modem and ISDN lines).
Static content caching
Some files like icons, CSS sheets or Javascript files are requested with every click made by the user. But the browser doesn't know that the files are always the same and only caches them for a certain predefined time. To avoid transferring these files again and again, a caching algorithm is used to tell the browser that his old file is still the latest one.
Output caching
Additional to the output compression, the whole output is cached to disk. So when the data hasn't changed, the output doesn't need to be generated again and again.
Object caching
All the sgsML modules are cached as serialized objects to the disk. Therefore they don't need to be parsed and processed every time. Thus time-expansive operations like synchronizing with the metadata from the database only needs to be done when the modules changes.
Smarty optimization
Simple Groupware contains an optimized version of the Smarty template engine. It is tuned to replace loop inclusions (which are a real time killer) with one single inclusion.
Caching external data sources
Accessing external data sources can be very slow (e.g. IMAP, iCalendar, RSS), especially when the network bandwidth is low, the data source is slow or there too many requests outstanding. Therefore all external data sources are cached with a TTL-based caching algorithm.
Image caching
Generating charts directly on the server is a slow process. Oftentimes users request the same chart from the server again and again. A special hashing algorithm is used to avoid generating the same chart twice.
Performance monitoring
Simple Groupware has built-in performance monitoring. When a page cannot be rendered in a specified time or the database response is too slow, an event is generated and displayed in the events module (inside Simple Groupware, go to Workspace / System / Events).
System monitoring
Every time a database query fails or an unexpected PHP error occurs, an event is generated and displayed in the events module (inside Simple Groupware, go to Workspace / System / Events).