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.
źródło
Odpowiedzi:
Niektóre dokumenty:
źródło
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ń:
źródło