Memcache sur pluxml

Bonjour,

Que penseriez-vous d'un plugin memcache histoire de réduire les
accés au fs ainsi que les traitements induits par la prise en compte des fichiers XML ?

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Pourquoi pas, s'il fonctionne bien et s'intégre bien à PluXml

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • JohanJohan Member
    Je me posais justement la question s'il existait un plugin de cache pour PluXml...
    cjovet tu te lances dans le dev ???
  • J'avais fais, il y a quelques temps une petit hack pour activer le cache (http://amoweb.fr/article68/booster-encore-plus-pluxml)
    On pourrait en faire un plugin, ou en tout cas le remettre au gout du jour. Ça vous ferait une base, pour le principe.
  • JohanJohan Member
    Comme précisé dans ton article amoweb, c'est une solution pour les blogs ayant beaucoup de contenu.
    Mais ta solution me parait pas mal et pourrait être intégré facilement dans un plugin.
    Personnellement, je n'ai pas le temps de me pencher la dessus mais je veux bien utiliser mon blog comme cobaye... :)
  • bg62bg62 Member
    mai 2011 modifié
    amoweb a écrit:
    J'avais fais, il y a quelques temps une petit hack pour activer le cache
    On pourrait en faire un plugin, ou en tout cas le remettre au gout du jour. Ça vous ferait une base, pour le principe.
    si vraiment "top" alors la seule solution : plugin !!!
    car à force de 'bidouiller' dans la source on arrive après à des bugs lors de mises à jour :)
    donc = en attente avec impatience
    @+
  • amowebamoweb Member
    Je vais regarder ce que je peux faire.
  • jeffjeff Member
    Voici un premier jet d'un plugin 5.1 beta1 de cache inspiré du travail d'amoweb.

    plugin : plxCache-0.1.zip
    theme associe : theme

    @cjovet impossible de réduire totalement les acces fichier sans modifier le moteur d'apres mes analyses ; les répertoires d'articles et de commentaires sont lus dès l'initialisation du moteur par exemple.

    j'arrive à 20% de gain, dans certaines configurations. Mais le moteur de pluxml est déjà optimisé. Si le plugin est pertinent je le basculerais dans la section plugin du forum.

    Testé sur Ubuntu PHP 5.3 et OVH PHP 5.2.

    memcached n'a été testé que sur Ubuntu.

    Si amoweb a le temps de jetter un oeil, je serais interessé par ses retours.
  • amowebamoweb Member
    Merci jeff, je vais regarder ça (pas aujourd'hui).
  • amowebamoweb Member
    Salut Jeff,
    Donc j'ai regardé ton plugin, il fonctionne très bien. Ce que j'aimerai arriver à faire à terme, c'est ne plus modifier le thème, car je pense que c'est très contraignant pour la plupart des utilisateurs.

    J'ai pensé intervenir sur chaque fonctions (catList, tagList; archList, lastArtList, lastComList : j'aurais pu dire *List :D) avec des hook pour mettre le résultat en cache, mais comment faire pour la boucle des articles dans home.php ?

    Par contre si on réfléchis un peu, ce qui ralentis, c'est le nombre d'article. Le truc bête, c'est que c'est les pages les plus souvent affichées travaillent sur tous les articles. Il faudrait donc essayer de réduire artificiellement ce nombre d'article, en créant (physiquement ou artificiellement), un dossier "récent", qui contient les 10 derniers article : puisque finalement la page d'accueil et la sidebar n'a pas besoin de tous les connaitre.

    Je vais y réfléchir. Dès que j'ai une petite idée, je te recontacte, ça me ferai plaisir de construire ce plugin avec toi :-)
  • jeffjeff Member
    juin 2011 modifié
    Bonjour amoweb,
    merci de ton retour,
    as-tu pu constater des gains de temps d'affichage ?
    Sur mon poste ce n'est pas flagrant, mais le système fichier doit rapidement monter en cache mémoire sur un tir de stress.

    Pour les 10 derniers articles, c'est faisable, avec un hook sur l'enregistrement d'un article.
    Par contre, on ne 'coupe' pas à la lecture entière du répertoire des articles et des commentaires dans plxMotor, lors de l'initialisation des variables plxGlob_arts et plxGlob_coms. Ce qui devient pénalisant avec le nombre d'articles et de commentaires.

    J'avais également pensé modifier le fichier index.php, pour y insérer un gestion de cache basé sur l'URL.
    Il y a cependant un problème d'initialisation. J'aurais voulu le placer avant la création du plxMotor, mais le plugin n'est pas initialisé .... Et ce n'est pas à la portée de tout le monde.

    En ce qui concerne la home Page, on peut jouer sur les hook plxMotorDemarrageBegin et plxMotorDemarrageEnd en mettant dans le cache, non plus du HTML mais l'objet plxRecord qui contient la liste des articles à afficher.
    Le premier appel met en cache avec la clef adéquate l'objet, les appels ultérieurs se contentent de mettre en place l'objet récupéré du cache.
  • amowebamoweb Member
    juin 2011 modifié
    Salut Jeff,
    Voilà ce que je propose une mise en cache SANS modification du thème :

    http://amoweb.fr/pluxml/data/documents/plxcachesanstheme.zip

    Ici le travail se fait sur la variable $this->plxMotor->plxGlob_arts->aFiles qui contient normalement la liste des fichiers. Le truc c'est qu'au moment de l'initialisation du plugin (avant que pluxml n'ait chargé les fichiers), j'annule la variable contenant le chemin vers les articles. Comme ça j'empèche PluXml d'en faire la liste, et je charge les fichiers depuis un fichier cache.

    Au niveau du gain, sur la boucle de chargement des articles, on gagne 77% pour 133 articles, et 95% pour 100 articles !
    Sur le PluXml en entier : 37% pour 133 et 53% pour 1000 articles. Ici je ne met pas en cache les commentaires (il n'y en avait qu'un pour le test).

    Je pense utiliser ton code pour la partie mise à jour du cache, car je ne la gère pas encore. J'attends ton accord, a moins que tu veuille le faire.

    Dernière chose, j'ai mis un fichier avec les modification du core. Je suis en train de négocier pour qu'elles soient, d'une manière où d'une autre présentes dans la prochaine version.

    Je n'ai pas fais de mesure en détail avec ta solution, de plus je suis en train de réinstaller mon Debian.

    EDIT : oups, les modifs sont pour la prochaine version, je te passe les modifs pour la béta tout a l'heure.
  • HamtaroHamtaro Member
    juin 2011 modifié
    Ca m'intéresse vivement ^^ (700 articles et des patates au compteur :p)
  • jeffjeff Member
    Merci amoweb pour ces infos,

    je n'avais pas réussi à désactiver la lecture du répertoire des fichier et des commentaires :-).
    Tu triches un peu en modifiant le core :-), j'espère que cela sera pris en compte.

    Je suppose à la lecture du code qu'il est adapté à la version final de la 5.1.

    Pour les modifications, le code est en ligne sur GitHub. (https://github.com/jfphilippe/plxCache).
    Je ne pensais pas que cela permettrait de gagner autant.
    Dans le meme ordre d'idee, je pense qu'il est possible de cacher le resultat de la methode demarrage du moteur plxMotor : la liste des articles et la liste des commentaires, ce qui eviterai d'avoir à lire autant de fichiers xml.

    Pour les modifications, je propose d'attendre la version "finale" de la 5.1, ton code a l'air de requerir quelques modifs qui y sont.

    De mon coté j'ai exploré une autre piste, mais elle requiert la modification de index.php (4 lignes à rajouter), j'évite la création complète du moteur, en cachant la page complete. Ce n'est pas actif sur la page d'un article pour que le captcha reste pertinent, mais sur les listes (home, categories, tags) ça booste. Si cela t'interesse, je package et te le met en ligne.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Amaury peux-tu regarder l'occupation mémoire avec et sans le cache.
    Tu utilises plxMotor dans les plugins avec passage de la variable par référence. Normalement cela ne devrait pas jouer sur la mémoire (ou peu, juste un pointeur) mais je voudrais en être sur.
    Merci

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • amowebamoweb Member
    juin 2011 modifié
    Jeff mes modifs du core fonctionnent avec la 5.1 beta.

    Stéphane, voici le résultat des tests :

    Core original : 1836392
    Sans cache : 1837120
    Avec cache : 1860984

    Donc 1ko de plus pour charger les objets. Normalement aucun copie n'est faite, sinon ça ne fonctionnerai pas puisque je modifie l'objet original. Je vais par contre optimiser le plugin, car 30ko me semble excessif.

    EDIT : voici donc la dernière version :
    http://amoweb.fr/pluxml/data/documents/plxcachesanstheme.zip
    Elle cache les commentaires et gère la mise à jour. J'ai du ruser à cause des singletons, mais ça fonctionne. Je l'essai en prod sur mon blog.
  • RubénRubén Member
    Félicitation pour ces améliorations !
  • amowebamoweb Member
    Il faut encore que je bosse sur le plugin, je viens de me rendre compte que les catégories ne s'affichaient plus. Il doit falloir cacher la liste des cat aussi. Je regarderai ça tout a l'heure.
  • jeffjeff Member
    juin 2011 modifié
    Bonjour amoweb,

    j'ai "codé" la gestion des categories.

    Souhaites-tu récupérer le code ?

    En ce qui concerne l'autre approche, le plugin est à l'adresse : https://github.com/jfphilippe/plxWebCache
    La modification à apporter à index.php est expliquée dans l'aide.
    Le plugin est pour la 5.1 beta1, (le moteur n'est pas passé dans le constructeur).
    Il faut activer le plugin dans la configuration de ce dernier.
  • amowebamoweb Member
    Super si tu as réussi à coder la partie catégories. Je veux bien y jeter un œil, si tu peux l'uploader, ou par mail.

    Pour ce qui est de l'autre approche, il ne faut pas abandonner l'idée. Il faut que je trouve un moment pour réinstaller mon GNU/Linux, et faire des tests plus approfondis.
  • jeffjeff Member
    Amoweb ,
    je la met en ligne sur GitHub : https://github.com/jfphilippe/plxMotorCache
  • amowebamoweb Member
    juin 2011 modifié
    Jeff,
    C'est une très bonne idée je pense de sérialiser, j'ai appliqué la règle aux autres fichiers (je testerai demain, mais je pense que c'est plus rapide, car "moins interprêté").

    Voici donc la dernière version, je la test en prod sur mon blog.
    http://amoweb.fr/pluxml/data/documents/plxcachesanstheme.zip (lien valide)
  • jeffjeff Member
    Bonsoir amoweb,

    le fichier n'est pas accessible. Il provoque une erreur sur le site.
    Tiens nous au courant des résultats du plugin (en terme de perf et de bugs éventuels sur ton site :) ).

    Quand tu auras le temps pourras-tu jeter un oeil à l'autre approche ?

    a+
Connectez-vous ou Inscrivez-vous pour répondre.