Scadenza cache casuale


13

Ho sperimentato tempi di scadenza della cache casuali per evitare situazioni in cui una singola richiesta impone l'aggiornamento simultaneo di più elementi. Ad esempio, una pagina Web potrebbe includere cinque diversi componenti. Se ciascuno è impostato per il timeout in 30 minuti, l'utente avrà un lungo tempo di attesa ogni 30 minuti. Quindi, invece, li impostate tutti su un tempo casuale tra 15 e 45 minuti per rendere probabile che al massimo un solo componente venga ricaricato per un determinato caricamento della pagina.

Sto cercando di trovare ricerche o linee guida su questo argomento, ad esempio parametri di varianza ottimali. Ricordo di aver visto un articolo su come Google (?) Usa questa tecnica, ma non riesce a individuarla e non sembra esserci molto scritto sull'argomento.


Puoi riformularlo come una domanda? Non è chiaro cosa ti aspetti da una risposta.
Derek,

Va bene, è fatto.
mahemoff,

Risposte:


4

3
Grazie per questi collegamenti, ma nessuno di essi menziona casualità.
mahemoff,

2
So quanti anni ha questa domanda, ma Matthew Neale di EstarOnline Limited ha fatto proprio questo (PDF): estaronline.com/images/assetimages/…
Nick Bedford

@NickBedford Questa è la risposta che stavo cercando. Il tuo commento dovrebbe essere la risposta accettata.
WhiteHotLoveTiger

0

Tornando per rispondere alla mia domanda, il problema principale qui è come evitare che tutto scada sempre allo stesso tempo. Se ciò è consentito, il sistema rallenterà e diventerà congestionato mentre popola nuovamente la cache.

Il più delle volte, questo non è davvero un problema in pratica. Nel tempo, tutti i componenti tendono a spostarsi in termini di tempo in scadenza. Se ci sono più componenti tutti ricostruiti contemporaneamente, si tratta di un odore di codice perché probabilmente dovrebbero essere memorizzati nella cache come un singolo componente (ad esempio se avessi l'intestazione, il corpo e il piè di pagina unici memorizzati nella cache separatamente, forse puoi cache nella pagina stessa).

Ci sono certamente momenti in cui molte cose devono essere memorizzate nella cache contemporaneamente, ad esempio dopo l'avvio di un sistema, se abbiamo cancellato l'intera cache o ruotato le chiavi della cache. In questo caso, di solito non è così male perché i componenti si riempiono rapidamente e le scadenze successivamente si allontaneranno.

Nella misura in cui questo è un problema, ci sono un paio di soluzioni:

  • È sufficiente selezionare una durata di scadenza della cache casuale entro un intervallo anziché una durata fissa, ad esempio un numero intero casuale compreso tra 15 e 90 minuti anziché 60 minuti.
  • Consenti risposte non aggiornate. Solo perché un elemento della cache è scaduto, non significa che non puoi usarlo se è ancora lì. A seconda delle esigenze aziendali, potrebbe essere accettabile utilizzarlo se si verifica un problema di prestazioni durante il recupero della versione originale dopo la scadenza. In HTTP, questo è lo scopo di "must-revalidate" (se vero, significa non usare la versione cache dopo la scadenza).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.