Un guide des transitoires dans WordPress

Publié: 2023-02-12

En tant que développeur WordPress, vous savez probablement déjà à quel point les performances sont importantes pour un site Web réussi. Cependant, comprendre les transitoires dans WordPress et comment ils vous aideront à optimiser vos projets peut être un peu délicat.

Heureusement, lorsque vous les décomposez, les transitoires ne sont pas si difficiles à comprendre. Tant que vous gardez à l'esprit quelques directives clés, vous devriez être sur la bonne voie pour les incorporer dans votre prochain plugin WordPress.

Dans cet article, nous donnerons un aperçu de ce que sont les transitoires WordPress, ainsi que comment et quand les utiliser. Il y a beaucoup de terrain à couvrir, alors allons-y!

Table des matières
1. Que sont les transitoires WordPress ?
2. Les avantages de l'utilisation de transitoires sur votre site WordPress
3. Inconvénients de l'utilisation de transitoires sur votre site WordPress
4. Quand utiliser les transitoires WordPress
5. Gestion des transitoires WordPress
6. Opérations de base utilisées dans les transitoires
6.1. 1. Réglage des transitoires
6.2. 2. Récupération des transitoires
6.3. 3. Suppression des transitoires
7. Expiration transitoire : comment ça marche ?
8. Comprendre l'API WordPress transitoires
8.1. Les deux implémentations les plus courantes du backend de l'API Transients :
9. Appliquer des transitoires dans votre développement
10. Faites-en plus avec votre site WordPress

Que sont les transitoires WordPress ?

Afin de comprendre les transitoires, il est utile d'avoir des connaissances de base sur la mise en cache et les interfaces de programmation d'applications (API).

La mise en cache des données d'une page Web est essentiellement un moyen de sauvegarder temporairement les données d'un site Web afin que s'il y a plusieurs demandes pour les mêmes données, le site n'ait pas à réexécuter MySQL ou PHP. Cela peut faire gagner des secondes et réduire la charge du serveur.

L'idée est de conserver temporairement les données, d'où le mot "transitoires". L'API Transients est similaire à l'API WordPress Options. Vous donnez un nom et une valeur aux données, qui peuvent être complexes, comme un tableau PHP à plusieurs niveaux, et elles stockent les données. Plus tard, peut-être même sur une demande différente, vous pourrez récupérer ces données en utilisant leur nom. La différence est que les données de la table Options resteront indéfiniment. Autrement dit, vous pouvez stocker des données et, trois ans plus tard, elles seront toujours là.

Chaque transitoire est composé de trois parties :

  • $ transitoire. Il s'agit de la chaîne utilisée pour identifier votre transitoire et l'appeler. Il est également appelé « clé » ou « nom » du transitoire.
  • valeur $. Il s'agit des informations récupérées via une API. La valeur d'un transitoire peut être un objet, un tableau, un nombre ou une chaîne.
  • $expiration. Il s'agit de la durée pendant laquelle un transitoire reste dans votre base de données, avant qu'il ne soit supprimé et que vous deviez accéder à nouveau aux informations dont vous avez besoin via l'API.

En surface, c'est tout ce qu'il y a pour les transitoires WordPress. Cependant, pour les utiliser correctement, vous devez en savoir plus.

Cependant, les données transitoires ne resteront pas. C'est le but! Vous pouvez demander les données et constater qu'elles manquent de deux manières. Tout d'abord, lorsque vous stockez les données, vous spécifiez une date d'expiration. Par exemple, vous pourriez dire "conservez ceci pendant trois heures". Donc, si vous le demandez après quatre heures, il manquera.

La deuxième façon est que cette donnée est autorisée à disparaître, à tout moment, pour n'importe quelle raison. Cela semble étrange, je sais! Quel est l'intérêt de stocker les données si vous ne pouvez pas compter dessus ? Le fait est que le stockage est une demande que WordPress tentera d'honorer, mais grâce à cette flexibilité, il est possible d'utiliser différents types d'implémentations pour le stockage transitoire, ce qui signifie qu'il est possible d'utiliser différentes technologies avancées pour rendre les transitoires extrêmement efficaces. , et fonctionnent correctement même dans un environnement multi-serveur en cluster.

En raison de cette chose "disparaître à tout moment", vous utilisez généralement des transitoires pour un cache. Autrement dit, si vous avez besoin de calculer quelque chose qui prend du temps réel, comme une requête MySQL lente, ou de récupérer des données à partir d'une source externe comme le flux Twitter ou RSS de quelqu'un, vous pouvez stocker les données calculées dans un transitoire, sachant que si elles disparaissent il est toujours possible de le recréer. Mais dans le cas habituel - quand il ne manque PAS - vous avez les données rapidement sans avoir à recalculer.

Les avantages de l'utilisation de transitoires sur votre site WordPress

Comme nous l'avons mentionné précédemment, le principal avantage des transitoires est qu'ils améliorent les performances du site Web. Voici un aperçu de la façon dont cela fonctionne, en utilisant le plugin Google Site Kit comme exemple.

Lorsque le plugin est activé, il utilise une API pour afficher les données de plates-formes telles que Analytics et Search Console dans le tableau de bord WordPress. Sans transitoires, WordPress devrait récupérer ces informations à partir de chaque outil chaque fois que vous consultez votre tableau de bord Site Kit :

Au lieu de cela, Site Kit inclut des éléments transitoires qui mettent en cache les données d'Analytics et de Search Console. Elles sont conservées pendant une journée (ou une heure si la plateforme ne renvoie aucune donnée).

Chaque fois que vous accédez à votre tableau de bord Site Kit, WordPress peut rapidement récupérer les informations stockées dans votre base de données au lieu d'avoir à appeler à nouveau l'API. Lorsque la période d'expiration est expirée, les anciennes données sont supprimées.

Cela signifie que vous n'avez pas à attendre que vos résultats se chargent à chaque fois. Cela s'avère pratique dans diverses situations, telles que l'affichage du nombre de partages sur les réseaux sociaux pour vos publications ou l'affichage d'un fil d'actualité.

Inconvénients de l'utilisation de transitoires sur votre site WordPress

Ce qui vous cause des problèmes avec les transitoires, ce sont les comportements différents et difficiles à reproduire que vous obtenez lorsque votre plugin/thème s'exécute sous différentes implémentations de transitoires. Différentes implémentations transitoires signifient que vous rencontrerez UNIQUEMENT des problèmes dans certaines configurations avec certains types de sites, et jamais dans d'autres. En tant que développeur, si vous n'êtes pas conscient de cet écueil et que vous ne codez pas en conséquence, vous penserez que votre code est bon, mais en fait il cassera sur le terrain, et vous ne saurez même pas comment le reproduire !

Quand utiliser les transitoires WordPress

Les transitoires sont supprimés de votre base de données une fois qu'ils atteignent la fin de leur période d'expiration. Pour cette raison, vous ne souhaitez les utiliser que pour les informations qui sont continuellement recréées.

De plus, bien qu'ils puissent améliorer les performances de votre projet, les transitoires sont mieux réservés aux requêtes volumineuses et aux appels distants. S'il faut plus de code pour créer un transitoire que pour simplement faire une nouvelle demande pour la ressource chaque fois que c'est nécessaire, il vaut mieux s'en passer.

Gestion des transitoires WordPress

Si vous souhaitez voir et gérer facilement les transitoires qui sont actuellement à l'œuvre sur votre site WordPress, vous pouvez installer le plugin Transients Manager :

Il fournit une liste complète des transitoires, que vous pouvez trouver en naviguant vers Outils > Transitoires :

Ici, vous pouvez voir les trois éléments transitoires que nous avons énumérés précédemment - la clé (nom), la valeur et la période d'expiration. Vous pouvez modifier n'importe laquelle de ces fonctionnalités en cliquant sur le lien Modifier :

Vous pouvez également supprimer les transitoires individuellement ou en bloc.

Opérations de base utilisées dans les transitoires

Lorsqu'il s'agit de coder vos propres transitoires, vous devrez probablement utiliser trois opérations de base. Nous avons décrit chacun d'eux ci-dessous, en continuant à utiliser Site Kit comme exemple.

1. Réglage des transitoires

La création ou la « configuration » des transitoires est le processus de définition de la clé, de la valeur et de la période d'expiration, et de l'application de ces informations aux données pertinentes. Pour ce faire, vous utiliserez le format suivant :

 Set_transient ('key', $value, expiration_period)

Voici le code utilisé dans Google Site Kit pour définir le transitoire qui stocke les données d'analyse :

 // Cache "data found" status for one day, "no data" status for one hour. set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS ); } return (bool) $has_data; } }

La clé transitoire est googlesitekit_analytics_has_data (définie plus tôt dans le code), la valeur est $has_data ou $has_data ? , et la période d'expiration est d'un jour ou d'une heure (selon la valeur).

2. Récupération des transitoires

La récupération des transitoires est un peu plus compliquée. Tout d'abord, vous devez utiliser une fonction pour demander les données nécessaires. Ensuite, vous vérifierez s'il a un transitoire correspondant qui doit être chargé, au lieu de faire une nouvelle demande d'API.

Le résultat pourrait ressembler à ceci :

 function some_function(){ $transient = get_transient('key');

Vous devrez ensuite soit renvoyer le transitoire, soit supprimer les données expirées et effectuer un nouvel appel à la source. Enfin, vous devez définir le transitoire après avoir renvoyé les nouvelles données, afin qu'elles soient à nouveau stockées jusqu'à la fin de la période d'expiration.

Dans Google Site Kit, cela ressemble à ceci :

 /** * Checks whether Analytics data exists for the given URL. * * @since 1.4.0 * * @param string $url The url to check data for. * @return bool */ protected function has_data_for_url( $url ) { if ( ! $url ) { return false; } $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url ); $has_data = get_transient( $transient_key ); if ( false === $has_data ) { /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */ $reports = $this->get_data( 'report', array( 'url' => $url, 'metrics' => array( array( 'expression' => 'ga:users' ), array( 'expression' => 'ga:sessions' ), ), ) ); if ( is_wp_error( $reports ) ) { $reports = array(); // Bypass data check and cache. } foreach ( $reports as $report ) { /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */ $report_data = $report->getData(); /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */ foreach ( $report_data->getTotals() as $date_range_values ) { /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */ if ( isset( $date_range_values[0], $date_range_values[1] ) && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] ) ) { $has_data = true; break 2; } } }

Ce code doit ensuite être suivi de l'extrait de code que nous avons inclus dans la section précédente pour définir les transitoires.

3. Suppression des transitoires

Dans certains cas, vous pouvez souhaiter supprimer un transitoire. Par exemple, si vous souhaitez toujours voir les analyses les plus récentes dans Google Site Kit, il serait préférable de ne pas mettre les données en cache (bien que nous ne vous recommandions pas de supprimer les transitoires de Site Kit).

Sinon, le plugin affichera les mêmes résultats tout au long de la journée, même si vous avez eu de nouveaux visiteurs. Étant donné que le transitoire dure 24 heures, les données que vous visualisez l'après-midi seront simplement une version en cache des données que vous avez chargées le matin.

Le moyen le plus simple de supprimer les transitoires consiste à utiliser le plug-in Transients Manager. Cependant, si vous souhaitez utiliser du code à la place, vous pouvez utiliser la fonction delete_transient() . Tout ce dont vous avez besoin est la clé transitoire :

 delete_transient('key');

Cependant, vous devrez répéter cette opération pour chaque transitoire que vous souhaitez supprimer.

Expiration transitoire : comment ça marche ?

Les périodes d'expiration transitoires peuvent être exprimées de différentes manières. Les deux options les plus simples sont :

  • En secondes ( set_transient('key', $value, 86400))
  • Utilisation des constantes de temps WordPress ( set_transient('key', $value, DAY_IN_SECONDS))

Alternativement, vous pouvez également définir des transitoires qui n'expirent jamais. Cela peut être utile dans les situations où vous souhaitez conserver les mêmes données transitoires, jusqu'à ce que vous supprimiez et réinitialisiez manuellement les informations mises en cache.

Créer des transitoires qui n'expirent jamais est assez simple. Laissez simplement le paramètre d'expiration vide dans la fonction set_transient ou identifiez-le comme zéro.

Comprendre l'API WordPress transitoires

L'API WordPress Transients est simplement le moyen par lequel les informations sont mises en cache dans la base de données de votre site. Il permet toutes les opérations connexes dont nous avons discuté tout au long de cet article, y compris la définition, l'obtention et la suppression des transitoires.

En d'autres termes, l'API Transients n'est que la partie du noyau de WordPress qui vous permet d'utiliser les transitoires.

Les deux implémentations les plus courantes du backend de l'API Transients :

  1. Celui intégré à WordPress, et donc de loin le plus courant. Les valeurs transitoires sont stockées dans la table wp_options, tout comme les options normales. Avec les transitoires, une option supplémentaire est stockée pour conserver la date d'expiration. Lors de l'accès à un transitoire, WordPress extrait d'abord la date d'expiration. S'il a expiré, WordPress supprime les deux options du tableau, "nettoyant" ainsi les données, et prétend que les données n'ont jamais été là. S'il n'a pas expiré, il récupère le contenu de la table des options.
  2. Memcaché. Memcached est un logiciel côté serveur très simple mais efficace et fiable conçu pour faire exactement ce que l'API Transients est censée faire - stocker des données basées sur une clé, qui expire à un moment donné, et qui peut disparaître à tout moment si nécessaire pour.

L'utilisation de memcached au lieu de WordPress Transients présente deux avantages particuliers, c'est pourquoi nous le préconfigurons automatiquement pour vous ici chez WP Engine. Nous sommes là pour vous

je. Memcached est 10 à 100 fois plus rapide pour stocker et récupérer des valeurs que WordPress Transients, ce qui est particulièrement intéressant puisque le but des transitoires est de mettre en cache des données pour augmenter la vitesse d'un site.

ii. Memcached définit la quantité maximale d'espace qu'il occupera avec les données (par exemple, 64 Mo de RAM), ce qui signifie que si un site stocke trop de données à la fois, il rejettera automatiquement les anciennes données et ne manquera donc jamais d'espace. Mais les transitoires WordPress intégrés stockeront une quantité arbitraire de données dans la table des options.

Application des transitoires dans votre développement

Supposons que vous lisiez et écriviez la même clé Transients à plusieurs reprises, et supposons qu'il s'agisse de 1 ko de données. Dans ce cas, Memcached et WordPress Transients feront exactement ce que vous attendez d'eux, et les deux occuperont environ 1k d'espace (soit dans le tableau des options, soit dans memcached).

Supposons maintenant que vous lisiez et écriviez différentes clés transitoires, différentes pour chaque session de navigateur. En bref, que se passe-t-il si vous stockez des données de session utilisateur dans Transients ? Cela a du sens en surface. Les données de session ne doivent pas durer éternellement et vous ne voulez pas vous embêter avec des tables de base de données spéciales. En plus de cela, de nombreuses sociétés d'hébergement WordPress n'autorisent pas les sessions PHP, c'est donc vraiment la meilleure chose à faire. C'est même rapide et multi-serveur.

C'est là que les différences apparaissent. Avec Memcached, et avec un site à faible trafic, cette méthode semble fonctionner. Les valeurs durent un certain temps, puis sont supprimées à mesure qu'elles expirent. Cependant, si le serveur est fortement chargé, la quantité de données de session que le serveur doit stocker dépassera l'espace disponible dans memcached, et donc vous commencerez à perdre des données de session plus tôt que vous ne le pensiez. Et si vous n'aviez pas testé dans cet environnement précis et très chargé, vous ne le sauriez jamais. En général, ces environnements finissent par remplir le memcached si rapidement que le memcached est effectivement désactivé car il ne peut jamais conserver les données assez longtemps pour être utiles. Vous n'avez effectivement pas du tout de cache d'API transitoire !

Mais avec les WordPress Transients, vous obtenez un comportement différent mais toujours très indésirable. Étant donné que les valeurs sont écrites dans la base de données, et non dans un bloc de RAM de taille fixe, elles restent toutes. Ce qui signifie que même avec le site très chargé, vous disposez toujours de vos données de session. Génial!

Ou alors vous pensiez. Parce que ce qui n'est pas dit dans l'API Transient, c'est ce qui se passe lorsque vous utilisez des clés uniques comme des sessions. Et ce qui se passe avec la méthode intégrée, c'est que la table des options se remplit indéfiniment ! Parce que : le « nettoyage des anciennes données » de WordPress ne fonctionne que lorsque vous demandez la clé (comme nous l'avons vu précédemment). Si vous laissez simplement la clé, elle reste dans la table des options, pour toujours. Il n'y a pas de processus séparé qui les nettoie !

Nous ne sommes pas seulement conscients de ce problème, nous voulons aider nos clients qui pourraient exécuter du code qui ne le comprend pas. C'est là que le «géré» dans Managed WordPress entre en jeu! Chaque nuit, nous avons un processus automatisé pour parcourir votre tableau d'options pour les transitoires expirés et les supprimer (à la fois les données et l'élément de date d'expiration). Boom! Ils sont partis, et vous n'avez pas à vous en soucier.

C'est donc génial que nous fassions cela, mais en tant que développeur d'un plugin ou d'un thème général censé fonctionner correctement sur n'importe quel environnement d'hébergement, vous ne pouvez pas le faire dans tous les environnements potentiels où votre plugin ou thème pourrait être déployé, et vous voulez vous assurer que vous fournissez à vos utilisateurs et clients le code le plus optimisé possible.

Cependant, maintenant que vous savez comment les transitoires peuvent mal tourner, il peut être judicieux d'y jeter un coup d'œil et de voir comment vous pouvez rendre votre code plus efficace. Si vous avez lu jusqu'ici, il y a de fortes chances que vous aimiez optimiser votre code, et cet article de blog peut vous lancer le gant et vous motiver à réécrire certaines choses pour être plus évolutif !

Faites-en plus avec votre site WordPress

En tant que développeur WordPress, il est essentiel de fournir à vos utilisateurs finaux un accès aux données distantes tout en maintenant des performances rapides. Les transitoires WordPress peuvent vous aider à accomplir cela.

Cependant, cela ne fait pas de mal d'obtenir un peu d'aide supplémentaire de l'hébergement WordPress ultra-rapide et des ressources de développement professionnel. Que vous débutiez dans le codage ou que vous soyez un professionnel chevronné, nous sommes prêts à vous aider. Découvrez nos plans aujourd'hui!