{maketoc}
|
-! bitweaver Performance Tips
|
-These tips are particularly important for high volume sites.
|
+!! 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. |
|
-!! Bitweaver Optimisation
|
-* every directoy is scanned on every page load. even though the overhead is not large, we recommend that you remove all unused packages from your server. you can add them back at a later time point if you need them later on.
|
-* Beginning with version 2, we have global liberty caching for any parsed content. this will dramatically reduce loading time and load on the server for such content. The setting can be found in the Aministration --> Liberty --> Liberty Settings page
|
+!! Tipps and tricks |
+* __((bitweaverPerformance#Tools|Install a PHP opcode caching mechanism))__ (see below) |
+* Disable all plugins and formats you don't need in Administration --> Liberty --> Plugins |
+* Make sure your [http://www.zoneedit.com/smtp.html|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. |
|
-!! Template Optimisation
|
-* ((Speed optimisation))
|
-* TemplateOptimization
|
+!! Other tipps and tricks |
+Yahoo's performance team names a dozen techniques for [http://developer.yahoo.com/performance/|improving web performance]. To test your bitweaver site against these recommendations, install their Firefox extension [http://developer.yahoo.com/yslow/|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: {code title=".htaccess"} |
+<IfModule mod_expires.c> |
+ExpiresActive On |
+ExpiresDefault "access plus 1 week" |
+</IfModule> |
+FileETag none |
+{/code} 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 [http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html|being discussed], as is [http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html|the ETags setting]. Example: When I called mybitweaver/kernel/admin/index.php, YSlow gave me an F and reported |
+{code title="before"}F (59), 207K, 52 HTTP Requests (Empty Cache), 52 HTTP Requests (Primed Cache){/code} |
+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: |
+{code title="after"}C (74), 207K, 52 HTTP Requests (Empty Cache), 2 HTTP Requests (Primed Cache){/code} |
|
-! System Perfomance Tips
|
-!! System Administration Tools
|
-* [http://www.vanheusden.com/multitail/|MultiTail] - tail on steroids
|
-* Make sure your [http://www.zoneedit.com/smtp.html|mail server] is working
|
+!! Template optimisation |
+* To optimize your custom theme, read our ((Speed optimisation|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. |
|
-!! Apache Settings
|
-Make sure you have an ((Advanced Apache Configuration for High Traffic Sites))
|
+!! 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 |
+** __[http://eaccelerator.net/HomeUk|php-eaccelerator]__ (a maintained version of [http://turck-mmcache.sourceforge.net/|turck-mmcache]); eAccelerator is detected or recommended by bitweaver's installer |
+** __[http://xcache.lighttpd.net/|XCache]__, included in Ubuntu (successfully tested with bitweaver: Ubuntu 8, PHP 5, XCache 1.2.1) |
+** __[http://php.net/apc|APC - 'Alternative PHP Cache']__ |
+* System Administration Tool: [http://www.vanheusden.com/multitail/|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 [http://www.ghastlyfop.com/blog/2008/01/lamp-performance-for-dummies.html|interesting page about MySQL tuning] |
+* If you have access to the configuration files of your web server and database, consider [http://docs.moodle.org/en/Performance|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 Optimisation
|
-* Use [http://www.php.lt/benchmark/phpbench.php|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
|
-* Install an Accelerator
|
-** Installation of a PHP opcode caching mechanism like [http://eaccelerator.net/HomeUk|php-eaccelerator] ( which is a maintained version of [http://turck-mmcache.sourceforge.net/|turck-mmcache] ) will dratically reduce PHP memory usage and improve execution time. It is available as a yum installable Fedora extra rpm.
|
+!! PHP code optimization |
+* Use [http://www.php.lt/benchmark/phpbench.php|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. |
|
-!! ((dbTuning: PostgresAdvocacy|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 teh postgresql-contrib rpm/deb/whatever, and execute something like this FedoraCore 3 command line:
|
-{code in="bash"}# psql foo < /usr/share/pgsql/contrib/tablefunc.sql{code}
|
-Then to your config_inc.php, add: {code in="php}define( 'POSTGRESQL_CONTRIB', TRUE );{code}
|
+!! 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: |
+{code title="FedoraCore 3 command line" in="bash"}# psql foo < /usr/share/pgsql/contrib/tablefunc.sql{/code} |
+Then to your ))config_inc((.php, add: {code title="config_inc.php" in="php}define( 'POSTGRESQL_CONTRIB', TRUE );{/code} |
|
-! ToDo
|
!! Areas to investigate for Code Opimizations
|
* ADODB
|
** If writing code, see the [http://phplens.com/lens/adodb/docs-adodb.htm#speed|Tuning tips] and install the [http://adodb.sourceforge.net/#extension|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 |