Utilisation de WordPress pour le développement d'applications Web fonctionnalités disponibles, partie 7 mise en cache

Lorsqu'il s'agit de créer des applications Web, l'une des choses les plus importantes à laquelle nous devons constamment tenir compte est la performance..

Comme on dit, la performance est une caractéristique.

Et peu importe si vous êtes un concepteur, un développeur ou un utilisateur, vous savez intuitivement que cela est vrai: en ce qui concerne les applications, nous détestons attendre. Nous sommes frustrés lorsque les choses ne fonctionnent pas assez vite, ou nous devons attendre plus longtemps que nous ne le croyons..

À cette fin, les infrastructures de développement Web les plus modernes permettent d’implémenter un certain type de mise en cache grâce à l’utilisation de certaines API et WordPress - même s’il s’agit d’une fondation - n’est pas différent..

Alors que nous poursuivons notre discussion sur les raisons pour lesquelles WordPress est une option viable pour servir de base au développement d’applications Web, nous allons examiner les API fournies par l’application principale, leur fonctionnement, comment nous pouvons les exploiter notre avantage, et comment les performances peuvent encore être améliorées par des plugins de cache supplémentaires.


Pourquoi la mise en cache est-elle importante??

En bref, la mise en cache est importante car elle nous permet de stocker des données fréquemment récupérées dans un emplacement en mémoire afin de pouvoir les récupérer rapidement..

À plus grande échelle, cela devient de plus en plus évident lorsque plusieurs utilisateurs consultent un site. Je veux dire par là que si une seule personne, ou un très petit nombre de personnes, consultent un site Web et que les données du site sont stockées dans une base de données, chaque fois qu'une page est chargée, ces informations doivent être récupérées à partir du base de données, insérée dans la page, puis renvoyée à l'utilisateur.

Si un niveau de mise en cache est institué, les appels à la base de données n'auront pas à être effectués aussi fréquemment. Au lieu de cela, les informations peuvent être extraites d’une zone de la mémoire, ce qui accélère la récupération et par conséquent le temps de chargement des pages..

Nous entrerons dans les détails techniques de cela un peu plus tard dans l'article.

Qu'en est-il des plugins?

Si vous utilisez WordPress depuis longtemps, vous connaissez probablement un certain nombre de plugins de mise en cache disponibles..

Ce sont sans doute d'excellentes solutions pour accélérer votre site Web et / ou vos applications Web, mais cela soulève la question suivante: si des plugins sont disponibles pour le faire, alors pourquoi devrions-nous nous en préoccuper??

C'est une question valable, bien sûr, mais les plugins ne peuvent faire que beaucoup de travail par eux-mêmes..

Les développeurs peuvent structurer leurs applications de manière à non seulement bien fonctionner sans mécanismes de mise en cache, mais également à être grandement améliorés par ces plugins de mise en cache..

J'entends par là que ces plugins de mise en cache recherchent des données à stocker dans un emplacement donné par thèmes et applications, et si nous pouvons le faire par programme dans le contexte de notre propre travail, ils produiront des performances encore meilleures..

Après avoir examiné les API disponibles, nous allons revenir sur ce sujet pour voir Comment ils améliorent les performances des plugins de mise en cache plus tard dans l'article.


L'API transitoires

Afin d'introduire un premier niveau de mise en cache dans l'application, nous devons tirer parti de l'API Transients de WordPress. Tout d'abord, notez que la définition officielle du transitoire est "quelque chose qui n'existe que pour une courte période".

Tout comme défini dans le Codex:

[L'API transitoire] offre un moyen simple et standardisé de stocker temporairement les données en cache dans la base de données en lui attribuant un nom personnalisé et un délai après lequel elles expireront et seront supprimées..

Mais qu'est-ce que cela signifie exactement? Après tout, les données sont toujours stockées dans la base de données, alors pourquoi est-ce mieux que de garder les données stockées dans une autre table de la base de données (telle que la wp_options table?)?

Une fois que nous aurons revisité la discussion sur la mise en cache et les plugins, nous en parlerons plus en détail.

Réglage des transitoires

Définir une valeur transitoire est en fait très facile, et cela ressemble beaucoup au stockage de données dans la table d'options.

Plus précisément, vous avez besoin d'une valeur de clé qui identifiera les données de manière unique, puis vous aurez besoin d'une valeur associée à cette clé. Vous devez également disposer d’un délai d’expiration (en secondes) pour conserver les données dans le tableau avant de les actualiser..

Supposons donc que nous souhaitons stocker le nom de l'utilisateur actuel en tant que dernier ou dernier utilisateur actif sur le site. Nous pouvons le faire en profitant de la wp_get_current_user () une fonction.

Tout d'abord, nous allons définir la valeur comme ceci:

set_transient ('most_recent_user', wp_get_current_user () -> user_login, 12 * HOUR_IN_SECONDS)

Ici, notez quelques choses:

  • J'identifie l'utilisateur le plus récent du système en tant qu'utilisateur actuel connecté; nous le stockons pendant 12 heures..
  • Notez que le HOUR_IN_SECONDS constantes est quelque chose qui a été introduit dans WordPress 3.5. Une liste complète des constantes est disponible ici.

Bien que ce soit comme ça que nous allons réglage un transitoire, cela ne explique toujours pas comment nous pouvons gérer les transitoires s'ils n'existent pas, ou s'ils existent déjà.

Nous couvrirons cela un peu plus tard dans l'article.

Récupération des transitoires

En ce qui concerne la récupération des transitoires, cela ressemble beaucoup à la récupération d'éléments tels que des métadonnées ou des options. Par cela, je veux dire que nous avons simplement besoin de connaître la clé permettant de récupérer les informations.

Donc, en cohérence avec l'exemple ci-dessus, nous pouvons récupérer l'utilisateur le plus récent de l'application avec l'appel suivant:

get_transient ('most_recent_user');

Cela renverra évidemment le type d'informations que vous avez stockées, ou si le transitoire a expiré, c'est-à-dire que plus de 12 heures se sont écoulées, la fonction renvoie la valeur booléenne de FAUX.

Il est essentiel de s'en souvenir, en particulier lorsque vous essayez de lire les valeurs de cache et que vous devez ensuite les récupérer à partir d'une autre source de données si elles ne sont pas disponibles dans le magasin temporaire..

Nous allons jeter un coup d'oeil à un exemple complet de ce faire avant la fin de l'article.

Suppression de transitoires

Enfin, si vous devez supprimer un transitoire, soit pour le supprimer complètement, soit pour le supprimer avant son expiration définie afin de le remplacer par une autre valeur, utilisez simplement la fonction suivante:

delete_transient ('most_recent_user');

De plus, cette fonction retournera FAUX si la suppression de la valeur transitoire échoue; sinon, ça va revenir FAUX.

Expiration des transitoires

Lorsqu'il s'agit de définir les délais d'expiration des valeurs de cache, plusieurs méthodes permettent de définir plus facilement des valeurs plutôt que de manipuler des entiers de base de musique..

Par exemple, MINUTE_IN_SECONDS est beaucoup plus facile à utiliser que 60, surtout si vous le multipliez par des minutes, des heures ou des jours.

Et à partir de WordPress 3.5, plusieurs constantes ont été ajoutées à l'application principale pour faciliter la lecture de ces calculs..

À savoir:

  • MINUTE_IN_SECONDS
  • HOUR_IN_SECONDS
  • DAY_IN_SECONDS
  • WEEK_IN_SECONDS
  • YEAR_IN_SECONDS

Beaucoup plus facile à utiliser, à lire et à écrire, n'est-ce pas?


Un exemple complet d'utilisation de transitoires

À ce stade, je pense qu’il est important de regarder comment nous pouvons procéder pour configurer les transitoires en commençant par stocker une valeur dans le tableau des options..

Voici l'ordre dans lequel nous allons procéder:

  1. Nous allons enregistrer une option dans le wp_options table.
  2. Ensuite, nous vérifierons si la valeur existe dans le cache.
  3. Si la valeur Est-ce que existe dans le cache, nous allons le supprimer; sinon, nous l'ajouterons.

Ensuite, dans la seconde moitié du code, nous ferons ce qui suit:

  1. Nous allons essayer de récupérer une fonction de valeur dans le cache.
  2. Si la valeur existe dans le cache, nous reviendrons à la table des options. cependant, si la valeur existe, nous l'utilisons.

Cela dit, jetons un coup d'oeil:

 $ username = wp_get_current_user () -> user_name; add_option ('most_recent_user', $ username); // Vérifie si la valeur existe dans le cache if (FALSE! == get_transient ('most_recent_user')) // Si c'est le cas, nous la supprimerons… if (delete_transient ('most_recent_user'))  … Et enregistrez l'utilisateur le plus récent pendant une minute maximum set_transient ('most_recent_user', MINUTE_IN_SECONDS);  else // La suppression a échoué, enregistrez l'erreur // Essayez maintenant de lire la valeur à partir du cache. if (FALSE! == ($ username = get_transient ('most_recent_user'))) // Puisqu'il n'existe pas, nous le lirons dans la table de l'option $ username = get_option ('most_recent_user'); // Et nous mettrons alors à jour le cache set_transient ('most_recent_user', $ username, MINUTE_IN_SECONDS);

Notez que cet exemple n'est pas complet. Il pourrait être refactored pour être un peu plus propre et le code devrait être résumé en fonctions plus pertinentes pour l'application, mais le but de ce code est de montrer comment gérer la logique conditionnelle, les options. et transitoires.


Comment ça marche avec les plugins?

Cela dit, nous pouvons revenir sur la question de savoir comment l'utilisation de transitoires peut améliorer les performances au sein des plugins..

Comme nous l'avons mentionné précédemment:

Après avoir examiné les API disponibles, nous allons revenir sur ce sujet pour voir Comment ils améliorent les performances des plugins de mise en cache plus tard dans l'article.

Cela dit, la mise en cache et la base de données WordPress ont à voir avec le emplacement des données dans la base de données.

Étant donné que les transitoires sont stockés dans un emplacement distinct du reste des données, les plugins, tels qu'un plugin basé sur memcached, par exemple, rechercheront les données où les transitoires sont stockés, puis les chargeront en mémoire à partir de cet emplacement..

Ainsi, lorsque les données sont demandées, elles seront extraites de la mémoire. Si les données n'existent pas, elles seront extraites de la base de données..

De plus, si la programmation est effectuée correctement, lorsque les données ne parviennent pas à être lues dans le cache et sont extraites de la base de données, elles seront insérées de nouveau dans le cache afin que la prochaine fois qu'elles soient récupérées, elles soient disponibles en mémoire..

Enfin, l'élément clé à noter concernant les informations transitoires est qu'elles ont une période d'expiration. Cela signifie que les données ne seront stockées dans cette zone de la base de données que pendant un laps de temps déterminé..

À cette fin, nous devons en tenir compte. Cela signifie que chaque fois que nous cherchons à récupérer des transitoires, nous devons nous assurer qu'ils existent. Si ce n'est pas le cas, nous les tirerons de là où ils sont situés, puis stockez-les au bon endroit.


Requêtes Personnalisées

À ce stade, nous avons couvert une grande partie des fonctionnalités offertes par WordPress en ce qui concerne les bases du développement d'applications Web..

Mais nous avons un dernier composant majeur à couvrir et voilà comment traiter les requêtes personnalisées.

Bien sûr, il existe d'excellentes API en ce qui concerne l'exécution de requêtes conçues pour des objectifs spécifiques à WordPress. WP_Query et WP_User_Query, mais nous examinerons également certaines des installations natives qui nous permettent d’écrire des requêtes personnalisées sur la base de données à l’aide d’objets WordPress définis, ainsi que des méthodes permettant un nettoyage correct des données..

Mais nous allons couvrir tout cela et plus de ce matériel dans le prochain article.