J'ai expérimenté des temps d'expiration de cache aléatoires pour éviter les situations où une demande individuelle force plusieurs choses à mettre à jour à la fois. Par exemple, une page Web peut comprendre cinq composants différents. Si chacun est réglé pour expirer dans 30 minutes, l'utilisateur aura un long temps d'attente toutes les 30 minutes. Donc, au lieu de cela, vous les définissez tous sur une durée aléatoire comprise entre 15 et 45 minutes pour qu'il soit probable qu'au plus un seul composant se rechargera pour un chargement de page donné.
J'essaie de trouver des recherches ou des lignes directrices sur ce sujet, par exemple les paramètres de variance optimale. Je me souviens avoir vu un article sur la façon dont Google (?) Utilise cette technique, mais ne peut pas le localiser, et il ne semble pas y avoir beaucoup d'écrit sur le sujet.
la source
Réponses:
Quelques documents:
la source
Pour en revenir à ma propre question, le principal problème ici est de savoir comment éviter que tout expire toujours en même temps. Si cela se produit, le système ralentira et deviendra encombré pendant qu'il remplit à nouveau le cache.
La plupart du temps, ce n'est vraiment pas un problème dans la pratique. Au fil du temps, tous les composants ont tendance à dériver en fonction du temps qu'ils expirent. Si plusieurs composants sont tous reconstruits en même temps, c'est une odeur de code car ils devraient probablement être mis en cache ensemble en tant que composant unique (par exemple, si vous aviez un en-tête, un corps et un pied de page uniques mis en cache séparément, peut-être que vous pouvez il suffit de mettre en cache la page elle-même).
Il y a certainement des moments où beaucoup de choses doivent être mises en cache en même temps, par exemple après le démarrage d'un système, si nous avons effacé tout le cache ou tourné les clés de cache. Dans ce cas, ce n'est généralement pas si mauvais car les composants se remplissent rapidement et les expirations se séparent par la suite.
Dans la mesure où il s'agit d'un problème, il existe quelques solutions:
la source