| Auteur |
Sujet |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
Bonjour,
J'aimerai savoir comment utiliser le cache sql pour postnuke ?
Car actuellement le cache pnrender ne me donne pas une entière satisfaction. En effet, lorsque je cache un block par exemple comme ceci :
- $pnRender = new pnRender('nom_module', true);
- $pnRender->cache_id = 0;
- $pnRender->cache_lifetime = 3600;
- if ($pnRender->is_cached('nom_module_block_template.htm'))
- {
- $blockinfo['content'] = $pnRender->fetch('nom_module_block_template.htm');
- return pnBlockThemeBlock($blockinfo);
- }
- else
- {
- $ma_requete = pnModAPIFunc('nom_module', 'user', 'ma_requete' );
- $pnRender->assign('ma_requete', $ma_requete);
- $blockinfo['content'] = $pnRender->fetch('nom_module_block_template.htm');
- return pnBlockThemeBlock($blockinfo);
- }
Il me bien en cache le block mais la requête sql est à chaque fois exécutée !
Comment faire car j'aimerai réellement baisser le nombre de requête sur mes pages pour le contenu "statique" (en moyenne 20 requêtes).
Merci d'avance ;)
|
| 19.02.2008, 10:50 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
? normallement, il n'y a pas de requetes si tu passes par le code "caché". Je viens de remarquer que le cache pnrender est sensible au module courant et à l'id de l'utilisateur courant, ce qui fait que tu passes de la page d'accueil à l'administration par exemple, le block va être reconstruit (ce qui est la majeure partie du temps complètement inutile) mais je n'ai pas l'impression que l'on ait beaucoup de possibilité d'action pour l'instant (à par patcher le code). Pour moi, c'est très embêtant car j'ai un block qui peut mettre 10-15 sec à se générer (une grosse recherche sur disque), j'ai donc mis un temps de cache très long mais je me retrouve avec pas mal de regénérations intempestives pour rien :(
Par contre, si tu te contentes de recharger ta page, cela devrait fonctionner !?! Le code à l'air correct ...
Tu as activé le cache en conf ?
modifié par : xbee, 19 Fév 2008 - 11:26
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 19.02.2008, 11:25 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
Merci xbee de ta réponse :
Tu as activé le cache en conf ? => Non mais néanmoins mon bloc apparait bien dans le cache du pnrender !
Par contre, si tu te contentes de recharger ta page, cela devrait fonctionner !?! => Non plus, il exécute quand même la requête $ma_requete = pnModAPIFunc('nom_module', 'user', 'ma_requete' );
J'ai vu que dans le DBUtil.class.php, on pourrait peu être cacher la requête... mais en regardant un peu plus près, le système de cache sql ne semble pas finalisé...
|
| 19.02.2008, 11:32 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
Après avoir décoché "Forcer la compilation", il exécute la requête une première fois puis lorsque l'on rafraichit la page, il ne ré-exécute pas la requête... super !
Sinon xbee, je suis allé sur ton site et je voulais te signaler que la page d'enregistrement ne marche pas avec moi (page blanche !).
Un second point, tu as 106 requêtes sur la page d'accueil, ne pourrais-tu pas "cacher" certains blocks ?
|
| 19.02.2008, 12:21 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Non, je ne savais pour l'enregistrement, je vais regarder ... Sinon, pour les requêtes, le cache est mis en place mais j'ai des problèmes entre xanthia et pnrender, les réglages ne sont pas assez fin pour l'instant et j'ai du débrancher le xanthia par exemple qui m'apportait plus de problème qu'autre chose :( mais les choses avancent ...
Poir l'option de recompil, effectivement, si tu l'actives, tu refais la total constamment.
Les seuls caches actuellement sont le pnrender (qui normalement cache aussi sql) et le xanthia. Pour le sql, en profilant en local avec le mod xdebug, on s'aperçoit que cela ne prend pas énormément de temps, on passe son temps dans les fetch, c'est-à-dire dans smarty et là il n'y a pas grand chose à faire pour moi. Il ne me reste donc qu'à optimiser les caches pour avoir des perfs correctes mais ce n'est pas encore le cas. Il y a également le problème de l'effacement du cache, actuellement, il est plus ou moins global et ce n'est pas génial non plus pour les perfs.
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 19.02.2008, 18:58 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Je viens de trouver la source de mon problème de "registration" mais je ne comprends que cela fonctionne chez certain. Le template user_user_register.htm contient:
- <!--[optionalitems propitem=$item]-->
Et je ne trouve aucun plugin pour cette fonction ???
Vous avez cela aussi chez vous ou j'ai loupé quelque chose ?
Merci
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 19.02.2008, 23:06 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
Pour moi ta page d'enregistrement remarche ;)
Il me semble que
- <!--[optionalitems propitem=$item]-->
correspond aux champs qui sont visibles ou non lors de l'enregistrement (voir la partie profil dans l'admin).
J'ai vu que smarty a été maj pour cette rc3... à voir si cela peut influencer sur les performances...
|
| 20.02.2008, 11:02 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Effectivement, cela fonctionne car j'ai enlevé la ligne qui posait problème et la RC3 contient encore le bug. Mark West vient de me dire le forum central que ce bug vient d'être pris en compte et corrigé ... donc c'était bien un bug !
Pour smarty, rien de spécial, j'ai pris en compte la plupart des modifs sur svn ou fur et à mesure mais cela ne change pas grand chose.
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 20.02.2008, 14:17 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
Oui, j'ai vu ton post sur le forum de pn... un bug d'éliminer
|
| 20.02.2008, 18:05 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Sinon, mon problème de 106 requetes sur la page principale vient du cache qui ne fonctionne pas. Et pourquoi il ne fonctionne pas ? Parce que j'utilise un pager dans mon template et que dans le code du pager nous avons:
- $pnr = pnRender::getInstance('pnRender', false);
Ce qui fait que cela inhibe le cache pour toutes les pages utilisant ce pager. Il va falloir améliorer cela parce que sinon le cache ne sert plus à grand chose ...
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 20.02.2008, 18:33 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Bon, je viens de trouver un moyen de contourner le probleme en remplçant la ligne fautive par:
- $pnr = pnRender::getInstance('pnRender');
- $pnr->cache_id = md5($template . '-' . $pager['firstUrl'] . '-' . $pager['prevUrl'] . $pager['nextUrl'] . '-' . $pager['lastUrl']);
Ce n'est peut être pas ultra général comme modif mais cela fonctionne chez moi. J'ai aussi poster un bug sur le NOC
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 20.02.2008, 19:09 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
xbee a écrit : Sinon, mon problème de 106 requetes sur la page principale vient du cache qui ne fonctionne pas. Et pourquoi il ne fonctionne pas ? Parce que j'utilise un pager dans mon template et que dans le code du pager nous avons:
- $pnr = pnRender::getInstance('pnRender', false);
Ce qui fait que cela inhibe le cache pour toutes les pages utilisant ce pager. Il va falloir améliorer cela parce que sinon le cache ne sert plus à grand chose ...
Bizarre car moi mon cache fonctionne malgré l'utilisation du pager... As-tu l'option Forcer la compilation activé ?
|
| 20.02.2008, 19:25 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Non, non, l'option de recompil n'est pas activé. Et de toute facon, c'est normal, si tu forces la valeur du cache (getInstance('pnRender', false)), c'est complètement normal que cela ne soit pas caché.
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 20.02.2008, 21:21 |
|
 |
xbee
Bisu
enregistré depuis : mai. 2007
Messages : 67
dernière visite: 05.04.08
|
Bon, je viens de trouver qqchose pour améliorer le cache des blocks. Pour éviter qu'un bloc ne se reconstruise à chaque module (admin, search, profile, ...) en mettant:
- $pnRender->cache_id = 0; // on force le même cache pour tout le monde
- $pnRender->compile_id = 0; // on force le même cache pour tout le monde
Je n'ai plus le problème après cela, le block ne se reconstruit plus dès que je change de module courant.
"Power corrupts. PowerPoint corrupts absolutely."
My personnal (french) Websites: http://www.xbee.net (0.8)
and http://fczone.xbee.net (0.764)
|
| 20.02.2008, 22:00 |
|
 |
Makeu
Bisu
enregistré depuis : oct. 2005
Messages : 80
dernière visite: 29.04.08
|
xbee a écrit : Bon, je viens de trouver qqchose pour améliorer le cache des blocks. Pour éviter qu'un bloc ne se reconstruise à chaque module (admin, search, profile, ...) en mettant:
- $pnRender->cache_id = 0; // on force le même cache pour tout le monde
- $pnRender->compile_id = 0; // on force le même cache pour tout le monde
Je n'ai plus le problème après cela, le block ne se reconstruit plus dès que je change de module courant.
Intéressant comme astuce, je testerai ce soir ;)
|
| 21.02.2008, 15:40 |
|
 |