Fork me on GitHub

Migrating Postnuke to Zikula, a good idea if you need speed?  Bottom

  • I migrate from postnuke to Zikula 1.1.2 and then tozikula 1.2.4 but maybe it was not a good idea, why?:

    Zikula performance and loading speed is worse than postnuke, I'm making the comparison on the same machine with the same database (migrated in the case of Zikula of course)

    I noticed several things:

    1) When postnuke only needed 1 or 2 CSS files, Zikula uses 1 CSS file for each module used. I have 15 CSS files loaded now. The same with javascript files.

    2) Zikula mixture in a single table "ppal_objectdata_attributes" users dynamic data with other data of the core fundamentals. This means that if you have a lot of users like me, ppal_objectdata_attributes table occupies 300 Mb And as in this table data are fundamental to the core, it is consulting continuously


    I keep researching and commenting on what you find ...

    You agree with this ?
  • Hi,

    generally speaking, moving from PostNuke to Zikula is a very good idea because Zikula is future-proof while PostNuke most certainly is not. On top of this, Zikula in corporates many security enhancements.

    As for your issues:

    #1 can be alleviated by using your .htaccess file set caching on for such files

    #2 can be alleviated by improving indexing on the objectdata_attributes table. You may have to do some investigating to see what type of query causes the slowdown, but in principle MySql should be able to handle such data volumes efficiently.

    Greetings
    Robert
  • #1 switch on CSS/JS optimization in you themesmanager settings and you will have only CSS file and one JS file.
  • dits

    #1 switch on CSS/JS optimization in you themesmanager settings and you will have only CSS file and one JS file.


    This screws up some themes. For me, my fonts get all tweaked out of size.
  • mesteele101

    This screws up some themes. For me, my fonts get all tweaked out of size.

    That should be fixed in 1.2.5. Alternatively like Robert mentioned you can have the CSS and JavaScript cached. Your .htaccess could contain something like this:

    Code

    # make sure users's browsers cache content
    AddType application/x-httpd-php .php
    AddType text/css .css
    AddType application/x-javascript .js

    ExpiresActive on
    ExpiresByType image/jpeg                "access plus 1 month"
    ExpiresByType image/gif                 "access plus 1 month"
    ExpiresByType image/png                 "access plus 1 month"
    ExpiresByType image/x-icon              "access plus 1 month"
    ExpiresByType text/css                  "access plus 1 week"
    ExpiresByType text/javascript           "access plus 1 week"
    ExpiresByType application/x-javascript  "access plus 1 week"
    ExpiresDefault                          "access plus 1 hour"

    # compression
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # no ETags
    FileETag None

    I often use the YSlow plugin for Firefox to test and optimize.
  • I'm running 1.2.5 -

    The below is my .htaccess that is located in the root of my web folder:

    Code

    # Security options, if they work in your environment. If you get a 500 error, then they won't.
    # These settings are best turned off in php.ini and will be on modern hosting environments.

    # php_flag register_globals off
    # php_flag magic_quotes_gpc off

     php_flag magic_quotes_gpc = OFF
     php_flag allow_url_fopen = ON
     php_flag display_errors = OFF
     php_flag expose_php = OFF
     php_flag disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open


    So my .htaccess should look like this:

    Code

    # Security options, if they work in your environment. If you get a 500 error, then they won't.
    # These settings are best turned off in php.ini and will be on modern hosting environments.

    # php_flag register_globals off
    # php_flag magic_quotes_gpc off

     php_flag magic_quotes_gpc = OFF
     php_flag allow_url_fopen = ON
     php_flag display_errors = OFF
     php_flag expose_php = OFF
     php_flag disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open

    # make sure users's browsers cache content
    AddType application/x-httpd-php .php
    AddType text/css .css
    AddType application/x-javascript .js

    ExpiresActive on
    ExpiresByType image/jpeg                "access plus 1 month"
    ExpiresByType image/gif                 "access plus 1 month"
    ExpiresByType image/png                 "access plus 1 month"
    ExpiresByType image/x-icon              "access plus 1 month"
    ExpiresByType text/css                  "access plus 1 week"
    ExpiresByType text/javascript           "access plus 1 week"
    ExpiresByType application/x-javascript  "access plus 1 week"
    ExpiresDefault                          "access plus 1 hour"

    # compression
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # no ETags
    FileETag None
  • That should work yes. Basically the addition would do three things:
    • cache images, CSS and JavaScript,
    • turn on compression when 'applicable', and
    • switch ETags off.
    For more detailed info look into the Yahoo info.

This list is based on users active over the last 60 minutes.