SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 80 visiteurs en ce moment

Accueil > Optimisation et performances > XRay, un explorateur de cache APC > XRay, un explorateur de cache

XRay, un explorateur de cache

28 novembre 2017 – par JLuc

6 votes

Ce plugin est construit à partir de apc.php, le browser de cache APC.
Il lui ajoute une surcouche dédiée aux squelettes de SPIP lorsqu’ils sont gérés par Mémoïzation avec le cache APC.

Le script apc.php fourni avec le cache APC permet
-  de lister les caches et faire des recherches sur le nom des caches
-  de zoomer sur l’un d’eux. Comme le contenu des caches SPIP est sérialisé, c’est peu lisible.

Le plugin adapte ce comportement pour SPIP et propose des outils permettant de mieux analyser les caches squelettes de votre site afin de les optimiser.

On y accède par une entrée du menu « Squelettes ».

Prérequis

-  Votre hébergement doit proposer un cache APC
-  Vous devez avoir installé et activé le plugin memoization avec APC
-  Le « cache user » de APC ne doit servir que pour les caches SPIP avec memoïzation.

Liste

La liste présente pour chaque cache

  • son nom. Pour une meilleure lisibilité, le plugin n’affiche pas le préfixe de _CACHE_NAMESPACE que memoization leur ajoute systématiquement.
  • sa taille
  • le nombre de hit, permettant de jauger l’efficacité du système de cache
  • la dates de création
  • la durée
  • etc

Si c’est le cache d’un squelette pour la session d’un visiteur identifié, un bouton ’session’ apparaît à droite : ce bouton permet d’accéder à la liste de tous les caches sessionnés de ce même visiteur.

On peut trier la liste selon chacun de ces critères.

Affichages extra

Un menu déroulant permet d’afficher certaines infos pour chacun des caches listés :

  • tout le contexte d’environnement utilisé par ce squelette, sous la forme du source d’un tableau php. Lors qu’il n’y a pas de contexte, le texte « (non défini) » est affiché.
  • seulement le contexte spécifique à ce squelette (sans afficher les contextes techniques)
  • le contexte relatif à spip_auteur seulement : id_auteur, nom et mail. (mais cet auteur ne doit en général pas être confondu avec l’internaute sessionné ayant généré un cache)
  • tous les invalideurs (dont les invalideurs génériques : cache et session)
  • seulement les invalideurs spécifiques à ce squelette, s’il y en a.
  • la liste des noisettes inclues dynamiquement avec <INCLURE...> dans ce squelette

Lorsqu’un élément du contexte affiché est un identificateur d’objet SPIP, alors un bouton apparaît à droite : ce bouton mène à la page SPIP d’édition de cet objet. Au survol de la souris sur ce bouton, un hint indique le titre SPIP de l’objet.

Si le plugin macrosession est installé et actif, ce menu propose aussi d’afficher
-  la liste des appels aux macros #_SESSION ou #_SESSION_SI. Il indique alors les arguments : le champ consulté et les éventuels opérateur et opérande.
-  la liste des appels aux macros #_AUTORISER_SI. Il indique alors les arguments de chaque appel.

Exemple : Dans un squelette admin_control.html, il y a un appel à #_AUTORISER_SI{webmestre} et un appel à #_AUTORISER{modifier, article, 2}. Lorsqu’on demande à voir les appels à #_AUTORISER, il apparaît ceci :

...8e7ccc6-admin_control/
[0] => 'webmestre'
[1] => 'modifier', 'article', '2'

Rq : comme l’affichage de cette information ’extra’ pour chaque élément de la liste nécessite la consultation du cache, elle incrémente artificiellement le nombre de ’hit’ sur ce cache, qui en plus de compter les hits nécessités par votre jeu de squelette, va également compter le nombre d’affichages extra faits avec xray. Autrement dit : comme en mécanique quantique, l’observation modifie le phénomène observé.

Filtrage

On peut faire une recherche sur les noms des caches, et ne plus lister, par exemple, que les caches des squelettes content/article_resume.

Un menu déroulant permet de demander à ne voir

  • que les caches des squelettes sessionnés
  • que les caches des squelettes sessionnés de visiteurs identifiés
  • que les caches des squelettes sessionnés de visiteurs non identifiés
  • que les caches de formulaire
Liste, filtrage et détails des caches
Dans cette configuration, seuls les caches sessionnés sont affichés. Ici, ce sont uniquement les caches sessionnés de visiteurs non identifiés.
On a demandé à voir les éléments de contextes spécifiques.

Un menu permet de faire cette recherche non sur les noms des caches mais sur leur contenu.
4 options sont proposées pour faire la recherche :

  • dans les noms des caches. Cela permet de cibler les caches d’un squelette particulier. C’est le fonctionnement par défaut et cela suffit pour la plupart des situations basiques. Ce mode ne modifie pas le nombre de hits des caches.
    -  dans le contenu des caches. Pour une recherche tout azimut dans le HTML produit, dans le contexte et les autres métadonnées.
    -  dans le HTML mis en cache seulement
    -  dans les métadonnées seulement : contextes, invalideurs et autres.

Zoom sur un cache

Quand on zoom sur un cache, sa valeur est présentée désérialisée lorsque c’est possible, sous la forme du source du tableau php. On distingue ainsi nettement les différentes métadonnées (contextes, invalideurs et autres) et le squelette HTML.

Un bouton local et un menu déroulant général permettent de demander à voir tout le HTML ou à ne voir que le début du HTML (80 premiers caractères) lorsque ce n’est pas cela qui nous intéresse.

Lorsqu’une entrée des métadonnées correspond à un identifiant d’objet SPIP, un lien permet d’accéder à sa page d’édition.
Par ailleurs, les 2 entrées source et squelette, dont les valeurs affichées sont, respectivement, l’adresse du fichier squelette source et du fichier squelette compilé, sont cliquables et donnent accès à la visualisation de ces sources, dans un nouvel onglet du navigateur.

Les caches des textwheels ne sont pas désérialisées.

Page de stats générales

En plus des statistiques, des paramètres et des graphiques de fragmentation et de répartition des caches d’APC, un nouvel encart dédié à SPIP apparaît. Pour l’instant, il présente la valeur du préfixe de nom des caches : _CACHE_NAMESPACE. utilisé par memoization.

Stats générales du cache APC

Utilisation pour le debug et l’optimisation

XRay est un bon moyen pour mieux se rendre compte du fonctionnement du cache, des enjeux de sa bonne gestion et des stratégies d’optimisation :
-  SPIP, PHP et Javascript sont dans un bateau
-  Utilisation de la balise #SESSION et optimisation
-  Optimiser les performances de SPIP
-  Du php dans le squelette à la place de #SESSION ou #CACHE 0

À partir de cette compréhension, la liste les caches sessionnés permet de passer en revue le cache et son usage à bon ou mauvais escient. C’est un bon complément à au plugin macrosession. Si un cache est sessionné alors qu’il ne devrait pas l’être, on peut étudier son cas et corriger cela. On peut ainsi lutter contre la multiplication des caches sessionnés qui mine l’efficacité du cache ; orienter la démarche d’optimisation vers certains squelettes et vérifier l’impact des optimisations réalisées.

Avoir un accès rapide et facile au contexte des caches permet également de débusquer des bugs :
-  arguments inutiles pour des inclusions.
-  mauvaise valeur d’arguments
-  appels à des inclusions avec des arguments {env} superflus (et donc nuisibles)
-  squelettes appelés de manière sessionnée et non sessionnée à la fois (selon l’endroit)

L’activation de xray n’interfère aucunement sur le fonctionnement du site. Néanmoins, une fois terminé le travail d’observation ou d’optimisation des squelettes, xray devient inutile. On peut le désactiver et il peut ensuite être réactivé à tout moment.

P.-S.

Remarques :
-  Le plugin s’appuie sur des heuristiques pour filtrer les caches selon leur type (sessionné ou non, visiteur identifié ou non). Il n’est pas exclu que certains cas particuliers soient mal filtrés et qu’il faudra affiner. Vos retours sont bienvenus.
-  XRay fonctionne uniquement avec APC Cache. Il serait utile de développer aussi une version pour memcached. Une version filecache risque d’être franchement lente, mais serait peut être utile, même sans réactivité. En attendant, si votre hébergement permet d’activer APC Cache, ça vaut le coup de le faire même temporairement, le temps d’utiliser xray et d’examiner le cache.

Dernière modification de cette page le 11 décembre 2017

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2294 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • SPIP 3, Agenda et FullCalendar

    6 août 2012 – 318 commentaires

    Depuis SPIP 3, l’affichage d’un agenda sous forme de calendrier par jour/semaine/mois à changé. Les filtres |agenda_memo et apparentés sont désormais obsolètes. Il en est de même pour les filtres agendafull_memo et apparentés du plugin Agenda. (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 28 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Bloc 1 : Zone d’entête Nom du site Slogan si plugin bandeau présent Zone (...)

  • Lecteur pdf javascript pdf.js

    20 février 2012 – 162 commentaires

    Ce plugin est basé sur le projet pdf.js qui permet une lecture en ligne des pdfs depuis le navigateur. Ce plugin est expérimental et les contributions sur la zone sont les bienvenues. Avantages Open source Ne requiert pas flash et donc (...)

  • GIS 4

    11 août 2012 – 1420 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)