par
Hubert Roksor » 12 oct. 2007, 12:42
tu n'introduis nullepart un notion de "durée de validité" pour ton cache
Tous les caches n'expirent pas forcément après une période donnée, on peut les invalider de différentes façons. Par exemple, imagine un guide touristique où chaque page recense une région et ses lieux culturels sous la forme d'URLs "/123-Loire/Châteaux", "/123-Loire/Musées", etc... Dans l'interface d'administration, si on met à jour les infos des Châteaux de la Loire, on efface le fichier "123_Loire_Châteaux.html". Ou si on met à jour des informations générales sur la Loire, on efface tous les fichiers "123_Loire_*.html". Les fichiers de cache sont effacés à chaque modification potentielle (inutile de vérifier si les modifications affectent réellement la page, parce que la vérification coûte aussi cher que la génération) puis régénérés la prochaine fois que la page correspondante est demandée.
Quelques notions rapides : le processus qui consiste à faire expirer des données mises en cache s'appelle l'
invalidation. La durée de vie d'un cache (si applicable) est abbrégée
TTL pour Time To Live. Je ne sais pas si le terme existe, mais j'ai toujours appelé un cache dont les données sont toujours valides (comme l'exemple donné plus haut) un cache "pertinent", parce que ses données sont toujours pertinentes (fresh) alors qu'un cache basé sur un TTL peut servir des données périmées (stale).
Comme la classe de
jojolapine le montre, mettre des données en cache est le plus facile, ça prendre 40 lignes avec les commentaires et en sautant des lignes. L'opération la plus délicate est l'invalidation, sachant qu'en utilisant un système d'invalidation ou de gestion trop complexe on peut perdre tout avantage à utiliser un cache.
[quote="Tracker"]tu n'introduis nullepart un notion de "durée de validité" pour ton cache[/quote]
Tous les caches n'expirent pas forcément après une période donnée, on peut les invalider de différentes façons. Par exemple, imagine un guide touristique où chaque page recense une région et ses lieux culturels sous la forme d'URLs "/123-Loire/Châteaux", "/123-Loire/Musées", etc... Dans l'interface d'administration, si on met à jour les infos des Châteaux de la Loire, on efface le fichier "123_Loire_Châteaux.html". Ou si on met à jour des informations générales sur la Loire, on efface tous les fichiers "123_Loire_*.html". Les fichiers de cache sont effacés à chaque modification potentielle (inutile de vérifier si les modifications affectent réellement la page, parce que la vérification coûte aussi cher que la génération) puis régénérés la prochaine fois que la page correspondante est demandée.
Quelques notions rapides : le processus qui consiste à faire expirer des données mises en cache s'appelle l'[b]invalidation[/b]. La durée de vie d'un cache (si applicable) est abbrégée [b]TTL[/b] pour Time To Live. Je ne sais pas si le terme existe, mais j'ai toujours appelé un cache dont les données sont toujours valides (comme l'exemple donné plus haut) un cache "pertinent", parce que ses données sont toujours pertinentes (fresh) alors qu'un cache basé sur un TTL peut servir des données périmées (stale).
Comme la classe de [b]jojolapine[/b] le montre, mettre des données en cache est le plus facile, ça prendre 40 lignes avec les commentaires et en sautant des lignes. L'opération la plus délicate est l'invalidation, sachant qu'en utilisant un système d'invalidation ou de gestion trop complexe on peut perdre tout avantage à utiliser un cache.