web-dev-qa-db-fra.com

Mise en cache d'objets APC en combinaison mise en cache de pages Batcache/memcached?

Dans l'article Comparaison de la mise en cache dans WordPress, partie 2 Matt Martz compare différentes configurations de mise en cache, parmi lesquelles la mise en cache d'objets APC avec Batcache page en cache. Dans ses fonctions, cette combinaison semble être le meilleur compromis entre complexité de la configuration et efficacité. Il ne mentionne pas memcached, donc je ne sais pas si c'est utilisé ou non. D'après la lecture du message de Mark Jaquith Backend APC Object Cache pour WordPress , il me semble que son plug-in fonctionne comme un back-end de remplacement à utiliser à la place de memcached, ce que le Instructions d'installation de Batcache dit à utiliser. C’est aussi ce qui s’est passé lors de mes expériences avec ces plugins. C'est à dire. soit le backend APC ou memcached est utilisé, mais pas ensemble ni en combinaison.

Cependant, en regardant le WordPress video hautes performances d'Iliya Polihronov (et c'est là que j'ai commencé à me pencher sur la mise en cache), j'ai eu l'impression que le cache d'objets APC pouvait être utilisé pour la mise en cache d'opcode en combinaison. avec Batcache/memchached pour la mise en cache de la page complète, pour des résultats encore meilleurs. (la discussion sur batcache se trouve à la toute fin de la vidéo) Est-ce possible et y aurait-il un avantage, ou suis-je confus?

Dans mon cas, je recherche la meilleure solution pour plusieurs serveurs virtuels uniques WordPress (c’est-à-dire non multisites) desservis par un seul serveur Web (nginx). Cela fonctionne sur un support à l'état solide (carte Raspberry Pi/SD), il serait donc préférable de conserver le cache en mémoire. J'ai un accès complet au système et des extensions apc, memcache et memcached sont installées.

edit: D'après la lecture du code source Batcache, Batcache utilise tout ce qui est proposé par object-cache.php; il s'agit donc du cache d'objets APC ou memcached, utilisé exclusivement par les plug-ins respectifs.

De plus, j'ai trouvé la définition de Bytecode, de la mise en cache des objets et des pages de Matt à la fin de de son message éclairant.

2
seron

La règle de base pour Memcached est la suivante: utilisez-la si vous exécutez plusieurs serveurs ou si vous vous connectez à plusieurs bases de données pour les mêmes ressources.

Une autre façon plus dure de le dire: Si vous ne savez pas ce que Memcached est, vous n'en aurez probablement pas besoin.

Comme vous avez un seul serveur (et probablement une seule base de données), vous ne pourrez pas tirer parti de plusieurs fonctionnalités de Memcached.

Memcached: Mise en cache d'objets distribués

APC: optimisation du bytecode

Vous pouvez utiliser une combinaison d'APC et Memcached, vous pouvez également utiliser APC avec Batcache sans Memcached ou diverses combinaisons de plugins, ce qui est un peu déroutant.

Pour clarifier Batcache

Batcache a la capacité de supporter Memcached mais si vous n’aurez pas installé Memcached, il utilisera toujours le cache d’objets de WordPress défini dans votre config.php à l’aide de define('WP_CACHE', true);. APC en tirera parti. .

Outre le fait de prendre en charge des configurations de serveur complexes via Memcached, Batcache présente l’avantage de ne pas écrire dans un fichier, c’est pourquoi des services tels que WordPress.com l’utilisent. Imaginons que s'ils devaient mettre en cache statique tous leurs sites, cela représenterait des milliards de fichiers et serait impossible à gérer via les E/S sur fichiers.

Bien que Batcache soit assez simple, l’exécution peut être complexe, elle peut être configurée comme indiqué par les commentaires ici: http://plugins.trac.wordpress.org/browser/batcache/trunk/ advanced-cache.php

Pour clarifier Memcached

Memcached est vraiment destiné à plusieurs serveurs afin qu'ils puissent partager et utiliser la mémoire de manière intelligente. En gros, ils partageront un pool de mémoire virtuel. Chaque nœud peut utiliser la mémoire d'autres nœuds (un nœud ne doit pas nécessairement être un serveur Web traditionnel). Memcache ne se soucie pas de la langue que vous utilisez puisqu'il prend en charge la plupart d'entre elles. http://memcached.org/about

Pour clarifier APC

APC en termes simples est un serveur unique et PHP uniquement. Il stocke toute la compilation basée sur PHP (bytecode) dans la RAM.

Pour un seul serveur

  1. APC + Mark Jaquith Dropin + plugin de cache de fichiers statiques ( super-cache, w3-total , etc., etc.) vous rapportera des résultats très rapides. En d'autres termes, APC + un cache statique est beaucoup plus rapide sur un serveur unique que Memcached et/ou un cache non statique. Vous pouvez bien sûr les combiner sur un seul serveur, je n'ai jamais essayé, il est peu probable qu'il y ait une amélioration. Utiliser Memcached sur un seul serveur déjà équipé d'APC serait comme essayer de remorquer une voiture en attachant l'avant vers l'arrière.

  2. L'alternative consiste à utiliser APC + Batcache au lieu d'un plugin de mise en cache statique, cela vous donnera probablement les mêmes résultats, assurez-vous simplement que vous avez suffisamment de mémoire RAM. C'est une bonne solution, mais elle nécessite plus de surveillance du serveur (imo) que la simple écriture de fichiers statiques, car les serveurs sont toujours des bêtes difficiles.

Si, après avoir effectué l'une des opérations ci-dessus, votre site rencontre toujours des problèmes, vous devez passer à un nouveau niveau avec votre matériel ou commencer à réfléchir à des configurations plus complexes avec plusieurs serveurs.

Gardez également à l'esprit qu'il ne s'agit pas seulement de la "vitesse" générale du site, mais de la vitesse + de la simultanéité.

N'optimisez pas pour le plaisir… vous arriverez à un point où l'optimisation ne fait rien à moins qu'il y ait une demande pour cela.

Notes:

Chaque configuration de serveur est différente et la mise en cache est directement liée aux performances de votre processeur, de votre RAM, de votre code et de vos configurations. Les résultats peuvent donc varier. Il existe de nombreuses options de configuration pour APC et Memcached.

Il est important de noter que https://github.com/zendtech/ZendOptimizerPlus finira probablement par remplacer APC.

ps. Testez APC sur un serveur de dev avant de commencer, il faut souvent jouer avec la configuration ou le serveur pourrait exploser.

4
Wyck