Version 17

bitweaverPerformance

Tips and Techniques for High Performance bitweaver

Created by: laetzer, Last modification: 06 Nov 2007 (05:13 UTC) by laetzer

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.

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
?>
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

before


<?php
(59), 207K52 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
(74), 207K52 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

  • 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) or 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 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

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
  • "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
Page History
Date/CommentUserIPVersion
30 Apr 2010 (07:36 UTC)
Lester Caine81.138.11.13627
Current • Source
Davis178.93.252.826
View • Compare • Difference • Source
laetzer85.178.0.17024
View • Compare • Difference • Source
laetzer85.178.44.920
View • Compare • Difference • Source
laetzer141.20.125.25419
View • Compare • Difference • Source
laetzer85.178.30.7417
View • Compare • Difference • Source
laetzer85.178.30.7416
View • Compare • Difference • Source
xing194.152.164.4513
View • Compare • Difference • Source
xing194.152.164.4512
View • Compare • Difference • Source
xing194.152.164.4511
View • Compare • Difference • Source
spiderr66.57.239.24510
View • Compare • Difference • Source
spiderr66.194.217.2219
View • Compare • Difference • Source
spiderr66.194.217.2238
View • Compare • Difference • Source
spiderr66.93.240.2043
View • Compare • Difference • Source