Losowe wygasanie pamięci podręcznej

13

Eksperymentowałem z przypadkowymi czasami wygaśnięcia pamięci podręcznej, aby uniknąć sytuacji, w których indywidualne żądanie wymusza aktualizację wielu rzeczy naraz. Na przykład strona internetowa może zawierać pięć różnych składników. Jeśli dla każdego z nich ustawiony jest limit czasu za 30 minut, użytkownik będzie miał długi czas oczekiwania co 30 minut. Zamiast tego ustawiasz je wszystkie na losowy czas od 15 do 45 minut, tak aby najprawdopodobniej tylko jeden składnik załadował się ponownie przy danym ładowaniu strony.

Próbuję znaleźć jakieś badania lub wytyczne na ten temat, np. Optymalne parametry wariancji. Pamiętam, jak widziałem jeden artykuł o tym, jak Google (?) Korzysta z tej techniki, ale nie mogę jej zlokalizować i wydaje się, że nie ma zbyt wiele na ten temat.

mahemoff
źródło
Czy możesz przeredagować to jako pytanie? Nie jest jasne, czego oczekujesz od odpowiedzi.
Derek
OK, gotowe.
mahemoff,

Odpowiedzi:

4

Niektóre dokumenty:

Haylem
źródło
3
Dzięki za te linki, ale żadne z nich nie wspomina o losowości.
mahemoff,
2
Wiem, ile lat ma to pytanie, ale Matthew Neale z EstarOnline Limited właśnie to zrobił (PDF): estaronline.com/images/assetimages/…
Nick Bedford
@NickBedford To była odpowiedź, której szukałem. Twój komentarz powinien być zaakceptowaną odpowiedzią.
WhiteHotLoveTiger
0

Wracając do odpowiedzi na moje pytanie, głównym problemem tutaj jest to, jak uniknąć wszystkiego, co zawsze wygasa w tym samym czasie. Jeśli tak się stanie, system zwolni i zapełni się, gdy ponownie zapełni pamięć podręczną.

W większości przypadków nie jest to w praktyce problemem. Z biegiem czasu wszystkie elementy mają tendencję do dryfowania pod względem upływu czasu. Jeśli jednocześnie jest odbudowywanych wiele komponentów, to jest to zapach kodu, ponieważ prawdopodobnie powinny one być buforowane razem jako pojedynczy komponent (np. Jeśli osobny bufor, nagłówek i stopka strony były buforowane osobno, być może wystarczy buforować samą stronę).

Z pewnością zdarza się, że wiele rzeczy musi być buforowanych jednocześnie, np. Po uruchomieniu systemu, jeśli wyczyściliśmy całą pamięć podręczną lub obróciliśmy klucze pamięci podręcznej. W tym przypadku zwykle nie jest tak źle, ponieważ składniki szybko się zapełniają, a terminy ważności będą się następnie rozsuwać.

W zakresie, w jakim jest to problem, istnieje kilka rozwiązań:

  • Po prostu wybierz losowy czas wygaśnięcia pamięci podręcznej w ramach zakresu zamiast ustalonego czasu trwania, np. Losowa liczba całkowita od 15 do 90 minut zamiast 60 minut.
  • Zezwalaj na nieaktualne odpowiedzi. To, że wygasł element pamięci podręcznej, nie oznacza, że ​​nie możesz go użyć, jeśli nadal tam jest. W zależności od potrzeb biznesowych może być dopuszczalne użycie go, jeśli po wygaśnięciu wystąpi problem z wydajnością podczas pobierania oryginalnej wersji. W HTTP jest to celem „must-revalidate” (jeśli prawda, oznacza to, że nie należy używać wersji z pamięci podręcznej po wygaśnięciu).
mahemoff
źródło