Expiration du cache aléatoire

13

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.

mahemoff
la source
Pouvez-vous reformuler cela comme une question? On ne sait pas exactement ce que vous attendez d'une réponse.
Derek
D'accord, c'est fait.
mahemoff

Réponses:

4

Quelques documents:

haylem
la source
3
Merci pour ces liens, mais aucun d'entre eux ne mentionne le hasard.
mahemoff
2
Je sais quel âge a cette question, mais Matthew Neale d'EstarOnline Limited l'a fait (PDF): estaronline.com/images/assetimages/…
Nick Bedford
@NickBedford C'est la réponse que je cherchais. Votre commentaire doit être la réponse acceptée.
WhiteHotLoveTiger
0

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:

  • Choisissez simplement une durée d'expiration du cache aléatoire dans une plage au lieu d'une durée fixe, par exemple un entier aléatoire entre 15 et 90 minutes au lieu de 60 minutes.
  • Autorisez les réponses périmées. Ce n'est pas parce qu'un élément de cache a expiré que vous ne pouvez pas l'utiliser s'il est toujours là. Selon les besoins de l'entreprise, il peut être acceptable de l'utiliser en cas de problème de performances lors de la récupération de la version d'origine après expiration. En HTTP, c'est le but de "revalider" (si vrai, cela signifie de ne pas utiliser la version mise en cache après expiration).
mahemoff
la source