Bonjour,

J'utilise Symfony sur mon site internet ; ce framework propose depuis peu la mise en cache via. le module Cache Compenent.
Cependant je me pose la question sur les "limites" d'un système de cache : ce qu'il "faut" mettre et ce "qu'il ne faut pas mettre".

Sur un site comme Grafikart par exemple, si il serait utile de mettre en cache les catégories du forum, de tutoriels et les tutoriels eux-même, en est-il de même pour les posts du forum ou les commentaires d'un article par exemple ? Est-ce pertinent de les mettre en cache si ils sont suceptibles de changer très régulièrement ? Pour une boutique en ligne par exemple, est-il utile de stocker tous les articles en cache, sachant que sur une boutique volumineuse les produits vont énormément évoluer ? Ou encore les données d'un utilisateur (adresse, pseudonyme, etc.) ? Je parle du cache côté serveur - en d'autres terme, la possibilité de mettre en cache le résultat d'une requête MySQL.

La question au final est "Est-ce bien de tout mettre en cache ?", c'est à dire tout ce qui est suceptible de provenir d'une base de données, ou au contraire faut-il uniquement se contenter des données peu modifiable (des catégories généralement) ?

Merci d'avance pour ceux qui pourront m'éclairer :)

3 réponses


Petit UP si jamais mais visiblement ... x)

Tout dépend du nombre de visiteurs sur ton site et le nombre de requetes en bdd .
mais si tu sens que ton site est lent, ca viens souvent de :

  • js non compile
  • la non mise en cache du css , js et des images
  • image mal redimensionne
  • les requete top nombreuses ex : n+1
  • pour que ton site ait une impression de rapidité,il suffit de rajouter "turbolinks"
  • ...
    Si tu n'as toujours pas les perfs suffisantes a ton gout , tu peux passer à la mise en cache.
    Perso, je pars toujours du principe "Tout peut être mit en chache", la mise en cache peut créer qu'un seul problème : les données ne sont pas maj des leur ajout en bdd...

Après, il y a une bonne partie de "bon sens" : les données qui changent toutes les 5 min et qui doivent impérativement rester à jour, ça ne sert à rien de les mettre en cache
par exemple, dans le cas d une boutique en ligne, on ne mettra jamais le nombre d'articles en stock en cache :-)

Le mieux, c'est de déjà s'occuper des problème que j'ai mentionné ci-dessus (la liste) , par après , si tu trouves tons site lent , que le CPU de ton serveur ne tient pas le coup, il faudra mettre cache les parties de ton site qui consomment le plus :-)
jc

Salut,

Pour répondre à ta question, je te conseille de regarder cette très bonne conférence, il applique pas mal de bonnes pratiques pour optimiser les perfs d'une application, je pense que ça pourra répondre en partie à ta question :)