Les performances et la réactivité sont essentielles lors du développement d'applications Web modernes. Surtout lorsque les visites de notre site Web deviennent de plus en plus grandes, comment optimiser les performances du site Web et réduire le fardeau du serveur est devenu un problème que les développeurs doivent résoudre. La mise en cache est l'un des moyens efficaces d'améliorer les performances, et PHP fournit l'extension APCU (alternative PHP Cache) qui peut mettre en mémoire les données, améliorant ainsi considérablement la vitesse de réponse de votre site Web.
Les extensions APCU permettent à la récupération des données de retirer les données en stockant des données dans la mémoire partagée sans avoir à lire à partir de la base de données ou du système de fichiers à chaque fois. Cela réduit non seulement le fardeau de la base de données, mais réduit également le temps de réponse du serveur.
APCU est une extension de cache pour PHP. Il fournit un mécanisme de mise en cache efficace qui prend en charge le stockage des données en mémoire pour l'accès aux demandes ultérieures. L'APCU a une latence plus faible et des performances plus élevées par rapport aux systèmes de cache traditionnels. Son principal avantage est qu'il peut mettre en cache le contenu de la page ou interroger les résultats pour réduire la quantité de calculs par demande.
APCU_ENTRY () est une fonction très pratique dans l'extension APCU. Il est utilisé pour stocker un élément de données dans le cache, tout en garantissant que l'élément de cache n'est pas stocké à plusieurs reprises avant son expiration. Cela permet au cache d'éviter les processus informatiques répétés, améliorant ainsi l'efficacité du système.
La syntaxe de base de la fonction apcu_entry () est la suivante:
mixed apcu_entry ( string $key , callable $callback [, int $ttl = 0 ] )
$ KEY : La clé mise en cache, similaire à l'indice d'un tableau, identifie de manière unique les données dans le cache.
$ rappel : une fonction de rappel qui sera exécutée pour générer des données mises en cache lorsqu'il n'y a pas de clé correspondante dans le cache.
$ TTL : Le temps de survie en cache, en quelques secondes, indiquant combien de temps il faut pour expirer après le cache. La valeur par défaut est 0, ce qui signifie qu'elle n'expirera jamais.
En cas de succès, renvoyez les données mises en cache;
Si la génération de cache échoue, false est renvoyé.
Via apcu_entry () , nous pouvons mettre en cache un contenu de page généré dynamiquement ou des résultats de requête. Lorsque nous accéderons à la même page la prochaine fois, nous l'obtiendrons directement du cache pour éviter le recalcul, améliorant ainsi la vitesse de chargement de la page.
Supposons que nous ayons une page Web avec un grand nombre de visites et que nous devons obtenir du contenu généré dynamiquement à partir de la base de données. L'obtention des données de la base de données prend beaucoup de temps et de ressources chaque fois qu'une page est chargée. Pour améliorer les performances, nous pouvons utiliser APCU_ENTRY () pour mettre en cache les résultats des requêtes de base de données.
<?php
// Vérifiez s'il y a un cache
$pageCache = apcu_entry('home_page_cache', function () {
// Simuler l'obtention de données d'une base de données
$data = file_get_contents("https://gitbox.net/data/content.txt"); // Supposons que ce soit les données qui doivent être mises en cache
return $data;
}, 3600); // cache1Heure
echo $pageCache;
?>
Nous essayons d'obtenir les données correspondant à la touche home_page_cache à partir du cache via la fonction apcu_entry () .
S'il n'y a pas de données dans le cache, la fonction de rappel sera exécutée, en usurpant le chargement des données d'un serveur distant (comme https://gitbox.net/data/content.txt ).
Les données récupérées seront mises en cache pendant 3600 secondes (c'est-à-dire 1 heure), et tous les accès au cours de cette période liront les données directement à partir du cache.
Si le cache n'a pas expiré, le prochain accès ne nécessite pas que les données soient à nouveau chargées, mais renvoie directement le contenu mis en cache.
De cette façon, nous pouvons éviter de reprendre les données du serveur à chaque fois que nous demandons, ce qui réduit considérablement le temps de réponse et la charge du serveur.
Cacheing Fichiers statiques : en utilisant APCU pour mettre en cache un contenu statique (tel que HTML, CSS, fichiers JavaScript), la vitesse de chargement de la page peut être encore améliorée. Pour le contenu qui ne change pas fréquemment, l'effet de cache est particulièrement évident.
Cache de requête de la base de données : Pour les situations où les requêtes de base de données sont lentes, vous pouvez utiliser apcu_entry () pour mettre en cache les résultats de la requête pour éviter d'exécuter les opérations de base de données à chaque fois que vous demandez. Combinée à l'optimisation de l'index de la base de données, les performances du site Web peuvent être considérablement améliorées.
Cache de page : Pour certaines pages statiques, APCU est utilisé pour mettre en cache le contenu HTML de toute la page. Lorsque le contenu de la page ne change pas fréquemment, l'utilisation du cache peut améliorer considérablement la vitesse de réponse.
Temps de cache approprié : réglez raisonnablement le TTL (temps de survie) en cache, ce qui évite non seulement les calculs répétés causés par le cache expiré trop rapidement, mais empêche également le cache d'être obsolète pendant longtemps.
En utilisant la fonction APCU_ENTRY () dans l'extension APCU, nous pouvons facilement mettre en cache le contenu généré dynamiquement, améliorant ainsi la vitesse de réponse et les performances du site Web. Qu'il s'agisse de résultats de requête de base de données en cache, de contenu de page ou de fichiers statiques, l'APCU est un outil très puissant qui peut réduire efficacement la charge sur le serveur et améliorer l'expérience utilisateur. Dans le développement réel, l'utilisation rationnelle du cache peut apporter des améliorations de performances significatives à votre application.