Pages catégorie invalidant mises en cache (page1, page2 etc.) lorsque le nouveau poste est ajouté?

StackOverflow https://stackoverflow.com/questions/3711525

Question

Imaginons que nous avons blog avec la catégorie A. Catégorie A est qui compte actuellement 1000 messages sur 100 pages. Toutes les pages sont mises en cache dans des fichiers (par exemple, mis en cache par le moteur de template Smarty). J'ajoute poste et que vous voulez qu'il soit affiché sur la première page immédiatement. Donc, je dois effacer ou cache invalidate pour toutes les 100 pages de catégorie A.

pages mises en cache est Suppression pas une bonne idée parce que nous pouvons avoir des fichiers trop (par exemple, des milliers de pages). Je pense que le cache et la régénération invalidant page sur demande est une façon beaucoup plus efficace.

Ma seule pensée est d'ajouter à number of posts in category id cache. Donc, nous devons d'abord obtenir le nombre de postes dans la catégorie (par exemple, à partir memcache), puis vérifier si la version mise en cache valide par ce numéro.

Tout semble bien et simple. Mais nous allons imaginer la situation quand j'ajouter un nouveau poste, puis après 1 minute je retirer un autre poste (plus). Nombre de messages encore 1000 et quelques pages de catégorie restera ancienne (si elles ne sont pas vus pendant cette 1 minute).

Quelle est la solution?

PS:. Désolé pour mon anglais, mais je pense que ma question sera claire des personnes qui ont déjà rencontrés ce problème

Merci

Était-ce utile?

La solution

Nombre de messages ne sont pas une bonne solution, car lorsque vous modifiez quelque poste que vous voulez rafraîchir la mémoire cache ainsi.

Couple de stratégies que je peux penser à:

  • Utiliser le temps quand un changement a été fait comme référence.

Lorsque le nouveau poste est ajouté (retiré, modifié) - magasin horodatage en cours dans une catégorie, permet de l'appeler cache_threshold. Lorsqu'une page est demandée - vérifier si cette page a été mise en mémoire cache. Si elle est plus ancienne que notre seuil -. Besoins de page à régénérer

  • Passer à la mise en cache objet plutôt que la mise en cache de la page.

Au lieu de la mise en cache des pages entières, vous pouvez mettre en cache chaque poste individuel. Si le nouveau poste est ajouté (retiré, modifié) vous simplement immédiatement son regénérer cache car il est pas beaucoup de temps. Pour afficher la page que vous voulez juste besoin de saisir une quantité de postes requis mises en cache et les afficher.

Cette solution nécessite plus de travail, mais il est plus souple et plus efficace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top