Mise en cache de données : définition et attention

La mise en cache de données est particulièrement adaptée pour améliorer le fonctionnement d’un site web ou d’une application.

Mais, pour que le cache soit efficace, certaines précautions doivent être prises.


Qu’est-ce que le cache ?

Le cache est un système qui permet de stocker temporairement des données. Les données mises en cache sont ainsi plus facilement accessibles et peuvent être réutilisées lors des requêtes ultérieures des utilisateurs.

La mise en cache contribue ainsi à réduire les temps de chargement des pages et améliore les performances des sites web et des applications.


Quelles données peuvent être mises en cache ?

La mise en cache a un intérêt pour :

  • Toutes les requêtes qui prennent du temps, comme une requête à un service externe ou une requête SQL complexe.
  • Les données qui vont être souvent appelées ou qui vont être utilisées par beaucoup d’utilisateurs en même temps.
  • Des informations qui doivent rester stables pendant une certaine période. Dans ce cas, il faudra intégrer une durée d’expiration qui correspond à la durée souhaitée.

Où stocker le cache ?

Il existe plusieurs solutions pour stocker le cache :

  • Filesystem ou mémoire vive : ce sont des solutions simples. Par contre, avec ces dispositifs, l’application n’est pas ‘headless’.

Un outil headless offre aux développeurs un contrôle complet sur la façon dont le contenu est présenté à l’utilisateur. En perdant le head, vous pouvez intégrer n’importe quelle base de code et utiliser le language de votre choix. D’un point de vue technique, un CMS headless utilise simplement les appels API pour rendre le contenu dans la base de code du site plutôt que de créer des relations complexes entre le code et le contenu.

  • Redis, memcache, etc. : il s’agit des systèmes généralement utilisés. Ils sont reliés à un serveur relationnel qui va stocker les données soit en mémoire vive, soit en fichier.
  • Stockage en base de données dans un serveur SQL par exemple. Pour cela, il est recommandé d’utiliser la dénormalisation.
  • Semaphores : là non plus ce n’est pas ‘headless’. Avec les semaphores, l’avantage est que la donnée est stockée au même endroit dans la mémoire. Il faudra juste dire au processus d’aller chercher l’information au même endroit. Si une information change pendant l’exécution du process, on en est immédiatement informé. C’est très utilisé pour les systèmes de ‘lock’, car cela permet de ‘délock’ le process facilement. L’inconvénient de ce système, c’est qu’il n’est pas headless.
  • Variable statique en PHP : il s’agit d’une solution très simple qui peut notamment servir à des fins de debug. Dans ce cas, le process en lui-même stocke cette variable et est capable de la fournir à nouveau sans la recalculer. Par contre, tout cela n’est valide que pour le process en cours. Il n’y a aucune persistance. Cela peut être très pratique pour faire un test et vérifier si une mise en cache peut apporter un plus.

Mise en cache et sécurité, les points de vigilance

La mise en cache peut entraîner des failles de sécurité, il faut donc être vigilant, et ce, à plusieurs niveaux :

  • La notion de ‘contexte’ : des informations sont générées pour certains utilisateurs, mais ne sont pas publiquement accessibles. Afin d’éviter de mettre en cache des informations confidentielles qui ne doivent pas à être publiques, il est recommandé d’ajouter dans un suffixe de clé, une notion de rôle ou de droits. Il est également possible d’utiliser la normalisation/dénormalisation pour supprimer ces données confidentielles et les re-générer au moment de la dénormalisation.
  • Dans un cache local, comme le cache des navigateurs, on peut être tenté de stocker des informations confidentielles comme une adresse, une liste de factures ou le nom d’une personne. Il faut toutefois penser à la possibilité que l’ordinateur soit volé, perdu ou même qu’il puisse être hacké.
  • Beaucoup de failles de sécurité sont liées à des fuites de mémoires, typiquement ‘memory overflow’ ou ‘request forgery’ dans le serveur de cache. En cas de mise en cache de données confidentielles, il faut donc revérifier la sécurité du cache storage (redis, memcache, file, etc.).

Bonnes pratiques et astuces, pour en savoir plus sur l’utilisation du cache dans vos projets web, découvrez notre vidéo sur « Pattern Caching. »


par Mistral Oz
Extrait de « Améliorez les performances de vos projets web »

Articles similaires TAG