Comprendre la mise en cache dans OpenCart

De nos jours, vous ne pouvez pas vous permettre de rester déconnecté même quelques minutes si vous avez affaire à un public international, car cela donne à votre concurrent l'occasion de prouver qu'il est en avance sur vous..

La mise en cache est un facteur important si vous traitez avec le développement Web. Cela aide vraiment à soulager les tâches lourdes qu’un serveur Web doit faire pour répondre simultanément à des milliers de demandes, voire à des millions. De nos jours, de nombreuses options sont disponibles pour améliorer les performances de votre application Web. concept de base de la mise en cache reste la même.

Le but de la mise en cache

L'époque où vous aviez simplement besoin de créer un site Web HTML statique contenant quelques pages et vous en avez terminé est révolue. Dans ce cas, vous n'avez pas à vous soucier des requêtes simultanées et du trafic important générés sur votre site Web, car il est beaucoup plus rapide d'envoyer ces pages HTML statiques par rapport aux pages Web dynamiques qui nécessitent un peu de ressources serveur pour être construites se.

Une page dynamique typique fait beaucoup, depuis l'interrogation d'une base de données jusqu'à la récupération de données auprès de fournisseurs de services tiers. Il faut beaucoup pour afficher une page contenant de nombreuses informations dans différents formats. Plus précisément, vous ne pouvez pas vous permettre d'interroger la base de données pour extraire les mêmes informations complexes pour chaque demande à mesure que le trafic augmente. Vos serveurs seront bientôt à court de ressources, et avant que vous puissiez faire quelque chose, ils seront partis!

Vous avez donc besoin de quelque chose entre les deux qui accélère les choses et c'est là que la mise en cache entre en jeu. L'idée de la mise en cache est très simple: vous stockez les résultats calculés / formatés et les récupérez si nécessaire pour que vous n'ayez pas à le refaire. Ce "quelque part" pourrait être n'importe où: le système de fichiers, la mémoire ou la base de données elle-même.

En outre, de nombreuses options sont disponibles pour la mise en cache-memcached, Redis, Varnish, etc. Vous pouvez les utiliser selon vos besoins, et parfois la combinaison de plusieurs composants contribue également à améliorer les performances de manière exponentielle..

Comme il faudrait une série complète pour expliquer les tenants et les aboutissants de la mise en cache, et que cela dépasse le cadre de cet article, nous allons revenir au contexte OpenCart et poursuivre dans la section suivante..

Nous allons utiliser la dernière version de OpenCart, alors assurez-vous de l'avoir installée pour suivre le code.

Fonctionnement de la mise en cache simple dans OpenCart

La bibliothèque de mise en cache est fournie dans le noyau lui-même, alors explorons-la immédiatement. Allez-y et ouvrez le system / library / cache.php déposer dans votre éditeur de texte préféré.

cache = new $ class ($ expire);  else exit ('Erreur: Impossible de charger le pilote de cache'. $ driver. 'cache!');  fonction publique get ($ key) return $ this-> cache-> get ($ key);  public function set ($ key, $ value) return $ this-> cache-> set ($ key, $ value);  fonction publique delete ($ key) return $ this-> cache-> delete ($ key); 

En commençant par le constructeur, il initialise le pilote de cache transmis dans l'argument constructeur. Si la classe est disponible pour l’adaptateur de mise en cache demandé, elle sera initialisée à la $ this-> cache propriété, sinon il va sortir avec le message d'erreur. Nous verrons les différents adaptateurs de cache dans la section suivante.

En outre, trois fonctions d'encapsidation sont utilisées pour effectuer toutes les opérations liées à la mise en cache..

le obtenir méthode est utilisée pour récupérer la valeur du cache.

$ this-> cache-> get ($ key);

le ensemble méthode est utilisée pour stocker la valeur dans le cache.

$ this-> cache-> set ($ key, $ value);

le effacer méthode est utilisée pour supprimer le mappage clé / valeur du cache.

$ this-> cache-> delete ($ key);

Il est donc très simple d'utiliser des fonctions de mise en cache dans vos modules..

Il existe de nombreux endroits dans l'interface frontale où les données sont extraites du magasin de cache. En citons quelques-unes:

  • derniers produits
  • produits best-seller
  • liste des fabricants
  • liste des pays
  • liste des devises
  • liste des zones
  • paramètres de magasin

Dans le cas de la mise en cache de fichiers, vous trouverez tous les fichiers de cache stockés sous le système / cache annuaire. Bien qu'OpenCart efface le cache lors d'événements appropriés, vous pouvez également effacer ces fichiers manuellement pour extraire les dernières données..

Voilà pour le wrapper de mise en cache. Dans la section suivante, nous verrons les différents adaptateurs de mise en cache disponibles dans le noyau et le gros travail qu'ils effectuent..

Adaptateurs de cache

Trois adaptateurs de mise en cache sont disponibles dans le noyau OpenCart-file, memcache et apc. L'adaptateur de mise en cache par défaut utilisé dans OpenCart est file.

Voici l'extrait de index.php qui initialise le $ cache objet avec l'adaptateur de mise en cache par défaut.

// Cache $ cache = new Cache ('fichier'); $ registry-> set ('cache', $ cache);

Malheureusement, il n'y a pas de moyen configurable qui vous permette de changer l'adaptateur de cache comme il est codé en dur. Cela dit, vous pouvez utiliser OCMOD pour modifier l’adaptateur de mise en cache par défaut sans modifier le fichier principal..

Étant donné que l'implémentation de chaque adaptateur de mise en cache est presque identique, nous ne regarderons qu'un adaptateur de mise en cache pour voir ce qui se passe. Prenons Memcache, par exemple. Allez-y et ouvrez système / bibliothèque / cache / mem.php. Vous pouvez également explorer les deux autres adaptateurs fichier.php et apc.php dans le même répertoire.

expire = $ expire; $ this-> cache = new \ Memcache (); $ this-> cache-> pconnect (CACHE_HOSTNAME, CACHE_PORT);  fonction publique get ($ key) return $ this-> cache-> get (CACHE_PREFIX. $ key);  public function set ($ key, $ value) return $ this-> cache-> set (CACHE_PREFIX. $ key, $ value, MEMCACHE_COMPRESSED, $ this-> expire);  fonction publique delete ($ key) $ this-> cache-> delete (CACHE_PREFIX. $ key); 

Chaque adaptateur de mise en cache est défini dans l'espace de noms «Cache» pour éviter les conflits.

Rappelez-vous les méthodes dont nous avons discuté dans la dernière section - elles se retrouvent ici. Alors, quand vous appelez le obtenir méthode dans le Cache classe, il appelle en fait le obtenir méthode définie dans la classe d'adaptateur réelle - dans notre cas, c'est la Mem classe.

La logique de manipulation des entrées de cache se passe dans les méthodes de classe d'adaptateur. Comme vous pouvez le voir, dans le constructeur de la Mem classe nous avons initialisé l'objet Memcache et établi la connexion en utilisant le pconnect méthode. Enfin, nous utilisons les méthodes get, set et delete de l'objet Memcache pour manipuler les entrées du cache..

D'autre part, si vous jetez un coup d'œil à l'implémentation du gestionnaire de cache de fichiers, le stockage et la récupération des entrées de cache à l'aide des fonctions du système de fichiers nécessitent un peu d'effort. En dehors de cela, il n'y a pas de différence dans la mise en œuvre.

Voilà donc tout ce qui concerne la mise en cache des adaptateurs dans OpenCart. Bien sûr, vous pouvez créer votre propre gestionnaire de mise en cache personnalisé si nécessaire. Vous devez juste implémenter les méthodes requises et vous avez terminé.

C'est tout pour aujourd'hui. J'espère que vous avez apprécié le didacticiel et qu'il vous incitera à utiliser la mise en cache dans vos modules personnalisés au besoin.

Conclusion

Aujourd'hui, nous avons discuté de la mise en cache dans OpenCart. Nous avons commencé par les bases de la mise en cache, et nous avons ensuite exploré l'utilisation de la mise en cache dans l'interface frontale. Enfin, nous avons examiné les différents adaptateurs de mise en cache disponibles dans OpenCart..

N'hésitez pas à exprimer vos pensées sous forme de questions et de suggestions à l'aide du flux ci-dessous..