2010-06-02 5 views
3

J'ai une classe de cache personnelle, qui peut être vu ici (base de WordPress):
http://pastie.org/988427Cache personnel vs Memcache?

J'ai récemment appris sur memcache et il dit memcache TOUT:
http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html

Ma première pensée était juste pour garder ma classe avec les fonctions actuelles et le faire utiliser memcache à la place - y at-il un inconvénient à faire cela?

La principale différence que je vois est que memcache reste sur le serveur de page en page, tandis que le mien est pour le chargement de 1 page. Le problème que je vois surgir, et c'est avec n'importe quel système, c'est qu'ils sont dynamiques. Ils changent tout le temps. Que ce soit les résultats de recherche, les produits visibles, etc. Si tout est en cache, le problème ne se posera-t-il pas?

Y at-il un moyen de gérer cela? Évidemment, si quelque chose ramène les mêmes résultats chaque fois qu'il serait mis en cache, mais c'est pourquoi je le faisais sur une base de chargement par page. Je suis sûr qu'il y a un moyen de gérer cela, ou le temps de mise en cache est-il généralement compris entre 5 minutes et une heure?

+1

Dans les grandes applications volumineuses, il n'est pas rare d'utiliser une stratégie de mise en cache comme celle que vous utilisez déjà * ET * memcache. La mise en cache de variables PHP pendant la durée d'une requête est beaucoup plus rapide que l'envoi de memcache. –

+0

Merci beaucoup pour ce commentaire - j'étais très coincé entre les pensées de ce qui est le mieux. –

Répondre

1

Vous avez certainement besoin d'une bonne stratégie de mise en cache pour éviter les problèmes avec les données périmées. Avec les données dynamiques et l'utilisation de memcached, vous devez supprimer les entrées de cache sur certaines mises à jour de données. Vous ne pouvez pas compter uniquement sur les entrées de cache pour expirer. Avec memcached, vous pouvez mettre en cache uniquement des parties de votre contenu dynamique pour une génération de page spécifique. Si vous souhaitez mettre en cache des documents html complets, je recommanderais d'utiliser un proxy inverse comme le vernis (http://varnish-cache.org/).

+0

La clé pense pour moi ici est "vous auriez à supprimer les entrées de cache sur certaines mises à jour de données". –