Voici un Tutorial, souhaitant vous apporter solution, dans tous les cas n'hésitez pas à revenir, ce module est en constante évolution ... Vous pouvez vous aussi y participer
Comment inclure Max Cache dans un module simple non doté de cache Temps prévisible pour l'installation: 1/4 heure Facilité d'installation:
Vous avez réalisé un nouveau module, ou bien tout simplement vous utilisez un module d'origine PHPNuke donc non doté du sytème de cache, ce tuto vous concerne ...
Max Cache est inclu d'origine dans Maximus donc pensé pour l'utilisation dans Maximus
Prenons un module, un truc très simple par exemple le module FAQ
Ouvrons le fichier :
modules/FAQ/includes/homefaq.php
Ce fichier est en fait la première page que l'on consulte dans le module FAQ.
Cette page est dotée de Max Cache, configuré pour tout type d'utilisateurs.
Comme on découvrira par la suite que Max Cache a une multitude de paramètres personnalisables.
Commençons par le commencement, dans les modules Maximus vous ne verrez pas d'inclusion de ce type pour le header ou le footer:
Mais deux fonctions qui vont jouer un rôle similaire et pourtant si différent ...
pour se souvenir des deux fonctions, c'est très simple
- inco c'est un condensé d'include
- H c'est pour le header
- F c'est pour le footer
voilà pour le détail.
Donc dans un module standart Maximus ne mettez pas un include mais une de ces deux fonctions ( et ceci pour plusieurs raisons que l'on évoquera à un autre moment ).
Maintenant je désire mettre un cache sur un module, le plus simplement possible sachant que ce module ne gère pas les groupes et que dans ce module aucune information n'est disponible pour les administrateurs ( comme dans le module FAQ ), j'entend par là par exemple des lien ou des images type 'Modifier' - ' Supprimer' ect ect
Ce module est donc exempt de fonctions administratives coté module.
Max Cache se résoud alors à sa plus simple expression
Nous avons besoin de générer un cache et un seul qui sera dès lors pour tous le même, l'ojectif étant de limiter au maximum la création de fichiers cache et d'aller le plus rapidement à l'affichage des données pour les utilisateurs.
Retrouvons dans le fichier ci dessus cité à la ligne 26, nous voyons ceci:
Le header est donc appelé par cette fonction, et Max Cache va être sollicité gràce aux variables contenues entre les parenthèses.
Voici le résumé des variables
- 'Faq' : non que Max Cache donnera aux fichiers cache
- 'html': extensions que Max Cache donnera aux fichiers cache
- "".CACHE_VFAQ."": temps de rétention ( non chiffré car d'origine Maximus )
- '1' : affichage unique pour tout le monde
Vous pourrez constater que l'appel du footer est de même type:
Maintenant j'ai mon nouveau module, et je veux reproduire ceci comment fais je ?
Supposons que votre module se nomme 'Vacances' ( peu importe le contenu )
voici par exemple comment le doter de Max Cache:
- 'Faq' est devenu 'Vacances' car un fichier cache à son propre nom afin d'éviter tout écrasement intempestif ( rassurez vous il y a d'autres controles ), mais aussi pour d'autres fonctionnalités que nous verrons plus tard
- 'html' est resté comme c'était, nous aurons donc un cache le plus rapide possible généré en HTML
- "".CACHE_VFAQ."" est devenu '14400' ( qui est un exemple ), 14400 sera le temps de rétention du cache, pour info le cache est calculé en secondes donc 14400 équivaut à 4 heures de temps de cache, ces quatres heures passées quoi qu'il se passe ce fichier cache sera détruit et un nouveau viendra prendre sa place ( plus motivé surement :) )
- '1' est resté sur '1' car tout le monde verra le même cache
Dans le cas d'un module simple comme le module FAQ, nous n'avons donc que deux choses à modifier:
1) le nom du cache
2) le temps de rétention du cache
C'est exemple est très simple à suivre et je le rapelle est viable UNIQUEMENT pour un module client non doté d'informations dédiées aux administrateurs ou non doté de la gestion des groupes, car une fois le cache généré TOUT LE MONDE verra la même page.
Ce qui implique que si le module contient des informations propres à l'administration du module, qu'un administrateur génère le cache alors tous le monde pourra voir ces informations !!!
Pour inclure le cache dans un module doté d'informations dédiées aux administrateurs consultez le tuto adéquat
Pour finir, Max Cache va 'avaler' TOUTES les requêtes SQL que contient ce module, ce qui pour résumer donne cela:
- tout module est plus ou moins complexe, en calcul, a plus ou moins besoin de requeter sur la base de données MySQL, et génère donc une page plus ou moins lourde et longue à afficher.
Maintenant supposons que votre module demande un temps X pour générer une page et 500 requêtes MySQL, il le fera à chaque utilisateur venant consulter cette même page, mais si votre module est doté de Max Cache comme décrit ci dessus, votre module sera généré une fois normalement ( avec son temps X et ses 500 requetes ), puis ensuite et ceci durant 4 heures dans l'exemple ci dessus sera généré par un envoi simple d'une page HTML
Inutile de parler du temps de génération X de cette page qui est réduit à quasiment plus rien ( le HTML est le code le plus rapide à l'affichage ) et surtout sera généré avec zéro requêtes SQL ( vous économiserez donc 500 requêtes SQL par page durant 4 heures ! ).
Ce module mis en cache ne requiert plus de base de données durant 4 heures, et vous en comprendrez donc aisément l'usage impératif sur tous les modules.
Gain de temps de génération, gain de temps de calcul, gain de besoin en ressources machine, gain en requêtes SQL puisque durant ce laps de temps l'affichage de ce module n'aura plus besoin du serveur MySQL.
Conclusion TOUS les modules doivent être paramétrés avec un temps de cache, et surtout les modules chargé en informations.
Avec Max Cache que vous ayez 10 questions-réponses ou 500 le temps de génération sera le même ( ou si infiniment différent, si peu de différence d'ailleurs ...), alors activez Max Cache, paramétrez le et n'hésitez plus à remplir vos modules d'informations car au moins à partir de maintenant vos utilisateurs peuvent avoir des milliers d'informations différentes sans attendre le contenu de chaque page de votre site :)
Pensez agrément de navigation sur le web pour vos utilisateurs: pensez Max Cache