bitweaverPerformance
Tips and Techniques for High Performance bitweaver
Created by: spiderr, Last modification: 30 Apr 2010 (07:36 UTC) by Lester Caine
Built-in optimization
- 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
- Activate gzip HTTP compression in Aministration --> Kernel --> Kernel 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.
Tipps and tricks
- Install a PHP opcode caching mechanism (see below)
- Disable all plugins and formats you don't need in Administration --> Liberty --> Plugins
- Make sure your mail server is working.
- 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
?>
before
<?php
F (59), 207K, 52 HTTP Requests (Empty Cache), 52 HTTP Requests (Primed Cache)
?>
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:
after
<?php
C (74), 207K, 52 HTTP Requests (Empty Cache), 2 HTTP Requests (Primed Cache)
?>
Template optimisation
- 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)
- APC - 'Alternative PHP Cache'
- System Administration Tool: MultiTail - tail on steroids
- If you have a high traffic site, make sure you have an Advanced Apache Configuration for High Traffic Sites.
- If you are running MySQL, there's this interesting page about MySQL tuning
- 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.
PHP code optimization
- Use Fast Coding Habits.
- 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:FedoraCore 3 command line
# psql foo < /usr/share/pgsql/contrib/tablefunc.sql
Then to your config_inc.php, add:
config_inc.php
<?php
define( 'POSTGRESQL_CONTRIB', TRUE );
?>
Areas to investigate for Code Opimizations
- ADODB
- If writing code, see the Tuning tips and install the ADODB C Extension
- "Content Delivery Network" and Multisites
- 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