Zufälliger Cache-Ablauf

13

Ich habe mit zufälligen Cache-Ablaufzeiten experimentiert, um Situationen zu vermeiden, in denen eine einzelne Anforderung mehrere Dinge gleichzeitig zur Aktualisierung zwingt. Beispielsweise kann eine Webseite fünf verschiedene Komponenten enthalten. Wenn jeweils eine Zeitüberschreitung von 30 Minuten eingestellt ist, hat der Benutzer alle 30 Minuten eine lange Wartezeit. Stattdessen stellen Sie alle auf eine zufällige Zeit zwischen 15 und 45 Minuten ein, damit höchstens eine Komponente für einen bestimmten Seitenladevorgang neu geladen wird.

Ich versuche, Forschungsergebnisse oder Richtlinien zu diesem Thema zu finden, z. B. optimale Varianzparameter. Ich erinnere mich, dass ich einen Artikel darüber gesehen habe, wie Google (?) Diese Technik verwendet, sie aber nicht finden kann, und es scheint nicht viel über das Thema geschrieben zu sein.

Mahemoff
quelle
Können Sie dies als Frage umformulieren? Es ist nicht klar, was Sie für eine Antwort erwarten.
Derek
Okay, das ist erledigt.
Mahemoff

Antworten:

4

Einige Dokumente:

Haylem
quelle
3
Vielen Dank für diese Links, aber keiner von ihnen erwähnt Zufälligkeit.
mahemoff
2
Ich weiß, wie alt diese Frage ist, aber Matthew Neale von EstarOnline Limited hat genau dies getan (PDF): estaronline.com/images/assetimages/…
Nick Bedford
@ NickBedford Dies ist die Antwort, nach der ich gesucht habe. Ihr Kommentar sollte die akzeptierte Antwort sein.
WhiteHotLoveTiger
0

Um auf meine eigene Frage zurückzukommen, besteht das Hauptproblem darin, zu vermeiden, dass immer alles gleichzeitig abläuft. Wenn dies zulässig ist, wird das System langsamer und überlastet, während der Cache erneut gefüllt wird.

Meistens ist dies in der Praxis wirklich kein Problem. Im Laufe der Zeit tendieren alle Komponenten dazu, in Bezug auf die Zeit, die sie ablaufen, zu driften. Wenn mehrere Komponenten gleichzeitig neu erstellt werden, ist dies ein Codegeruch, da sie wahrscheinlich als einzelne Komponente zwischengespeichert werden sollten (z. B. wenn Sie die eindeutige Kopf-, Text- und Fußzeile einer Seite separat zwischengespeichert haben, können Sie dies möglicherweise Cache einfach die Seite selbst).

Es gibt sicherlich Zeiten, in denen viele Dinge gleichzeitig zwischengespeichert werden müssen, z. B. nach dem Starten eines Systems, wenn wir den gesamten Cache geleert oder die Cache-Schlüssel gedreht haben. In diesem Fall ist es normalerweise nicht so schlimm, weil sich die Komponenten schnell füllen und die Verfallszeiten anschließend auseinander driften.

In dem Maße, in dem dies ein Problem ist, gibt es mehrere Lösungen:

  • Wählen Sie einfach eine zufällige Cache-Ablaufdauer innerhalb eines Bereichs anstelle einer festen Dauer, z. B. eine zufällige Ganzzahl zwischen 15 und 90 Minuten anstelle von 60 Minuten.
  • Erlaube veraltete Antworten. Nur weil ein Cache-Element abgelaufen ist, heißt das nicht, dass Sie es nicht verwenden können, wenn es noch vorhanden ist. Abhängig von den Geschäftsanforderungen kann es akzeptabel sein, es zu verwenden, wenn ein Leistungsproblem beim Abrufen der Originalversion nach Ablauf auftritt. In HTTP ist dies der Zweck von "must-revalidate" (wenn true, bedeutet dies , dass die zwischengespeicherte Version nach Ablauf nicht verwendet wird).
Mahemoff
quelle