Installation of a PHP opcode caching mechanism like php-eaccelerator ( which is a maintained version of turck-mmcache ) will dratically reduce PHP memory usage and improve execution time. It is available as a yum installable Fedora extra rpm.
Install the tablefunc contribution to achieve massive optimization of GatekeeperPackage security look ups. tablefunc has the Oracle'esque "connectby" function that will let you execute recurisve queries on a hierarchical table that has id/parent_id rows, ala the tiki_fisheye_gallery_map. To install, make sure you have installed teh postgresql-contrib rpm/deb/whatever, and execute something like this FedoraCore 3 command line:
Every directory is scanned on every page load. Even though the overhead is not large, you should remove all unused (uninstalled) packages from your server. You can add them back (and install them) later.
Beginning with version 2, we have global liberty caching for any parsed content. This dramatically reduces loading time and load on the server for such content. Visit: Aministration --> Liberty --> Liberty Settings
Open the file /kernel/config_inc.php and search for the variable $smarty_force_compile … it should be FALSE for high performance and TRUE only while working on template files. The default after installation of bitweaver is FALSE.
Limit the maximum numbers of listings in Aministration --> Kernel --> Kernel Settings. For instance, if only 20 blog postings are listed on the front page instead of 40, less database queries need to be done.
Limit and cache "side modules". In Aministration --> Themes, you can add modules to the left, right, header, or footer area. By default, these modules display 10 lines. By lowering this value, you safe on database queries. The same screen lets you cache them for a given time.
Other tipps and tricks
Yahoo's performance team names a dozen techniques for improving web performance. To test your bitweaver site against these recommendations, install their Firefox extension YSlow. It will grade your page and list potential bottlenecks. Some of the recommendations, like using a "content delivery network", might not be for everyone. Some other techniques concern the handling of CSS, JS and HTML files. By creating an .htaccess file in your bitweaver directory, you can strive for an A in Headers and ETags:
.htaccess
<?php <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 week" </IfModule> FileETag none ?>
The note "access plus 1 week" is quite arbitrary, some people recommend "access plus 1 year" or 2 years. This header can even be problematic! Its pros and cons are being discussed, as is the ETags setting. Example: When I called mybitweaver/kernel/admin/index.php, YSlow gave me an F and reported
After creating the above mentioned .htaccess file, I got a C! Only the actual HTML file and one JS file were downloaded again, the other files didn't cost an HTTP request anymore:
To optimize your custom theme, read our Speed optimisation research, comparing bitweaver to selected other content management systems by analyzing their main pages for HTTP requests and load times, and listing possibilities to optimize them.
Tools and information
Install a PHP opcode caching mechanism. This might be the most notable performance boost of all! It will drastically reduce PHP memory usage and improve execution time, sometimes as much as several 100 percent! Recommendations are
php-eaccelerator (a maintained version of turck-mmcache); eAccelerator is detected or recommended by bitweaver's installer
XCache, included in Ubuntu (successfully tested with bitweaver: Ubuntu 8, PHP 5, XCache 1.2.1)
If you have access to the configuration files of your web server and database, consider this performance guide, written for a well-known PHP software called Moodle. It lists all of the tricks mentioned here, as well as some in-depth recommendations on your server's hardware, its operating systems, Apache, IIS, MySQL and more, of which much applies also to bitweaver.
Allocate a large chunk of memory to php in your php.ini file.
Install ImageMagick's Magickwand for better image handling.
Install pecl fileinfo for better type checking on file uploads.
Postgres
See dbTuning: PostgresAdvocacy. Install the tablefunc contribution to achieve massive optimization of GatekeeperPackage security look ups. tablefunc has the Oracle'esque "connectby" function that will let you execute recurisve queries on a hierarchical table that has id/parent_id rows, ala the tiki_fisheye_gallery_map. To install, make sure you have installed the postgresql-contrib rpm/deb/whatever, and execute something like this:
since some browsers fetch files faster or more simultanously if located on different domains, if MultisitesPackage is installed (which means that more than one vhost links to the same bitweaver folder), Javascript or CSS or image files could be delivered from different domain names without being duplicated in the file system