Mysql
 sql >> Base de données >  >> RDS >> Mysql

Cachez les données dans PHP SESSION, ou interrogez-vous à partir de la base de données à chaque fois ?

Si vos données sont utilisées sur toutes les pages, et sont les mêmes pour tous les utilisateurs, je ne les mettrais pas en cache dans $_SESSION (ce qui signifie avoir une copie différente de ces données pour chaque utilisateur), mais avec un autre mécanisme, comme :

  • fichier
  • En mémoire, avec APC par exemple (si seulement 1 serveur)
  • En mémoire, avec memcached par exemple (si vous avez plusieurs serveurs)
  • Si vos données nécessitent de longs calculs ou plusieurs requêtes de base de données à obtenir, la mise en cache dans la base de données pourrait être une autre possibilité (cela signifierait qu'une seule requête à récupérer et moins de calculs)


Si vos données ne sont pas les mêmes pour chaque utilisateur (ce qui semble être le cas dans votre situation, puisque vous mettez en cache des noms, des dates de naissance, ...) :

  • Je m'assurerais de ne mettre en cache que ce qui est nécessaire
  • Une fois que vous n'avez que quelques données à mettre en cache, les mettre en session devrait être tout à fait correct
  • Si vous avez vraiment autant d'utilisateurs, vous aurez probablement d'autres problèmes d'évolutivité, et vous en viendrez très probablement à utiliser quelque chose comme memcached de toute façon; ce qui signifie que vous aurez un autre moyen de mettre en cache;-)

En remarque :si vous faites la même requête encore et encore, votre serveur de base de données devrait la mettre en cache par lui-même (pour MySQL, il irait dans le "cache de requête "); donc, ce ne serait pas aussi mauvais que vous le pensez, je suppose -- même s'il n'est pas tellement optimisé ^^