Esporta (0) Stampa
Espandi tutto

Scadenza e rimozione (Cache nel ruolo per Cache di Azure)

Aggiornamento: settembre 2014

noteNota
Per indicazioni sulla scelta dell'offerta di Cache di Azure più adatta alla propria applicazione, vedere Qual è l'offerta di Cache di Azure più adatta alle mie esigenze?.

Gli oggetti memorizzati nella cache non rimangono nella memoria di Cache di Microsoft Azure per un tempo indeterminato. Oltre a essere rimossi dalla cache in modo esplicito tramite il metodo Remove, gli oggetti memorizzati nella cache possono scadere oppure essere rimossi dal cluster di cache.

La scadenza della cache consente al cluster di cache di rimuovere automaticamente gli oggetti dalla cache. Quando si usa il metodo Put o Add, è possibile impostare un valore di timeout facoltativo per lo specifico oggetto della cache. Questo valore determinerà il tempo di permanenza nella cache. Se il valore di timeout dell'oggetto non viene fornito al momento della memorizzazione nella cache, l'oggetto usa la scadenza predefinita, che varia a seconda che si usi memorizzazione nella cache basato su ruoli di oppure Shared Caching.

Se si usa memorizzazione nella cache basato su ruoli, sono disponibili tre opzioni relative alla scadenza:

 

Tipo di scadenza Descrizione

Nessuna

La scadenza è disabilitata. Gli elementi rimangono nella cache finché non vengono rimossi o il cluster di cache viene riavviato.

Assoluta

Gli elementi scadono entro un determinato periodo di tempo dalla creazione.

Estendibile

Gli elementi scadono entro un determinato periodo di tempo dall'ultimo accesso. Ogni volta che si esegue l'accesso all'oggetto, la finestra temporale scorrevole viene reimpostata. In questo modo, gli elementi usati di frequente rimangono nella cache più a lungo.

noteNota
È importante notare il comportamento di una scadenza Estendibile quando viene usata in combinazione con la cache locale. Se un elemento viene letto dalla cache locale, l'accesso all'oggetto nel cluster di cache non viene eseguito ed è quindi possibile che l'elemento risulti scaduto nel server anche se viene letto in locale.

In Shared Caching, la scadenza è sempre Assoluta e non è possibile impostare una scadenza predefinita. Gli elementi in Shared Caching scadono dopo 48 ore. È tuttavia possibile usare i metodi Put e Add per impostare scadenze esplicite nel codice. Tenere presente che i provider ASP.NET usano automaticamente questi overload per fornire timeout espliciti per la memorizzazione nella cache dello stato della sessione e dell'output. In entrambi i casi, quando la dimensione della cache supera i limiti dell'offerta di Shared Caching, gli elementi usati meno di recente nella cache vengono rimossi.

Se gli oggetti memorizzati nella cache vengono bloccati per la concorrenza, non verranno rimossi dalla cache anche se è stata superata la scadenza. Nel caso in cui siano scaduti, verranno rimossi dalla cache subito dopo essere stati sbloccati.

Per impedire la rimozione istantanea quando si sbloccano oggetti che nel frattempo sono scaduti, il metodo Unlock supporta anche l'estensione della scadenza dell'oggetto memorizzato nella cache.

Esistono due tipi complementari di invalidamento per la cache locale: invalidamento basato sul timeout e invalidamento basato sulla notifica.

TipSuggerimento
Una volta archiviati gli oggetti nella cache locale, l'applicazione continua a usarli fino a quando non vengono invalidati, indipendentemente dal fatto che vengano aggiornati da un altro client nel cluster di cache. Per questo motivo, è opportuno abilitare la cache locale per i dati che non vengono modificati frequentemente.

Una volta che gli oggetti vengono scaricati nella cache locale, vi restano fino a quando non raggiungono il valore di timeout specifico indicato nelle impostazioni di configurazione del client della cache. Quando questo valore viene raggiunto, gli oggetti vengono invalidati. L'oggetto potrà essere aggiornato dal cluster di cache quando verrà richiesto la volta successiva.

Se nel client della cache è abilitata la cache locale, è inoltre possibile usare le notifiche della cache per invalidare automaticamente gli oggetti memorizzati localmente nella cache. Se si riduce la durata di questi oggetti in base alle esigenze, è possibile evitare il rischio che l'applicazione usi dati obsoleti.

noteNota
Le notifiche non sono supportate in Shared Caching.

Quando si usano le notifiche della cache, l'applicazione effettua un controllo nel cluster di cache a intervalli regolari per verificare se sono disponibili nuove notifiche. Tale intervallo, definito intervallo di polling, corrisponde a 300 secondi per impostazione predefinita. L'intervallo di polling viene specificato in unità di secondi nelle impostazioni di configurazione dell'applicazione. Si noti che anche con l'invalidamento basato sulla notifica, i timeout continuano a essere applicati agli elementi della cache locale. Ciò rende l'invalidamento basato sulla notifica complementare a quello basato sul timeout.

Per informazioni ed esempi, vedere Cache locale (Cache nel ruolo per Cache di Azure).

Per mantenere la capacità di memoria disponibile per la cache di ciascun host della cache, è supportata la rimozione degli elementi utilizzati meno di recente. Per garantire una distribuzione uniforme della memoria tra tutti gli host della cache nel cluster vengono usate soglie determinate da due fattori: la quantità di memoria fisica disponibile in ogni computer e la percentuale di memoria di cache riservata in ciascun computer.

Quando il consumo di memoria supera il valore specificato dalla soglia, gli oggetti vengono rimossi dalla memoria, indipendentemente dalla scadenza, finché le richieste di memoria non diminuiscono. Gli oggetti memorizzati successivamente nella cache possono essere reindirizzati ad altri computer nel cluster di cache per mantenere una distribuzione ottimale della memoria.

WarningAvviso
Se si disabilita la rimozione, può verificarsi un problema di limitazione delle richieste. In questo caso, la memoria supera la soglia, ma non è possibile risolvere il problema di memoria insufficiente. Se i client tentano di aggiungere elementi alla cache in questo scenario, viene generata un'eccezione finché il problema non viene risolto. Tenere presente che Shared Caching non supporta la disabilitazione della rimozione in una cache.

Il comportamento relativo alla scadenza e alla rimozione viene configurato nelle impostazioni di configurazione del cluster a livello di cache denominata.

I seguenti metodi consentono di ignorare le impostazioni predefinite presenti nella cache:

  • I metodi Add e Put forniscono gli overload che consentono di specificare un valore di timeout di scadenza solo per l'oggetto aggiunto alla cache.

  • I metodi PutAndUnlock e Unlock forniscono gli overload che consentono di estendere la scadenza di un oggetto dopo averlo sbloccato.

  • Il metodo ResetObjectTimeout consente di estendere in modo esplicito la durata di un oggetto, ignorando le impostazioni di scadenza della cache.

Indipendentemente dalle impostazioni di scadenza o rimozione, se un cluster di cache viene riavviato, tutti gli oggetti della cache vengono cancellati. Se nella cache non vengono trovati dati, il codice dell'applicazione dovrà ricaricare la cache da un'origine dati. Tale operazione viene spesso definita modello di programmazione cache-aside.

Vedere anche

Mostra:
© 2014 Microsoft