Le listing des requêtes faite ressortir une requête identique qui se répète plusieurs fois (5 fois dans mon cas) :

SELECT m.*, me.signature, me.avatar_size, me.avatar_location, me.avatar_type, me.vdirs,
me.location, me.msnname, me.interests, me.yahoo, me.website, me.aim_name, me.icq_number,
g.*, cf.*
FROM ibf_members m
LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)
LEFT JOIN ibf_pfields_content cf ON (cf.member_id=m.id)
LEFT JOIN ibf_member_extra me ON (me.id=m.id)
WHERE m.id='0'

Le constat est rapide. Il n'y a pas de membre à l'id = 0. La requête retourne rien donc alimente le cache avec rien. De ce fait une interrogation du cache ne retourne rien et ré-effectue la requête. La fonction concernée par ce problème et la fonction get_advinfo() que j'ai redéfinie pour qu'elle tienne compte des invités.

/**
* Grabs detailed information on a member.
* Modification : Gestion des guest.
* @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com>
* @author Pita (conversion to 2.0) <peter@randomnity.com>
* @author Cow <khlo@global-centre.com>
* @param integer $memberid
* @return array Member Information, or FALSE on failure
* @see get_info(),get_avatar(),get_raw_sig(),get_photo(),get_member_pips(),get_member_icon(),get_num_new_posts(),get_skin_id()
*/

function get_advinfo($memberid = '') {

if (!$memberid)
  { $memberid = $GLOBALS['ibforums']->member['id']; }

// Gestion des guests non présentes de base ! :
if ( empty($memberid) || $memberid == 0 )
  { return false; }
else if ($cache = $this->get_cache('get_advinfo', $memberid))
  { return $cache; }
else
  {
   $this->DB->query ("SELECT m.*, me.signature, me.avatar_size, me.avatar_location, me.avatar_type, me.vdirs,
me.location, me.msnname, me.interests, me.yahoo,
me.website, me.aim_name, me.icq_number,
g.*, cf.*
FROM ibf_members m
LEFT JOIN ibf_groups g ON (m.mgroup=g.g_id)
LEFT JOIN ibf_pfields_content cf ON (cf.member_id=m.id)
LEFT JOIN ibf_member_extra me ON (me.id=m.id)
WHERE m.id='"
. intval($memberid) . "'");
   if ($this->DB->get_num_rows())
    {
     $info = $this->DB->fetch_row();
     $this->save_cache('get_advinfo', $memberid, $info);
    return $info;
    }
   else
    { return FALSE; }
  }
}

Dans le cas d'XPerience-Fr, cette fonction étant utilisée plusieurs fois, j'économise ainsi 5 requêtes MySQL sur la page d'accueil. Vous pouvez en gagner plus ou moins selon votre code.