Cache locale in Cache nel ruolo di Azure
Importante
Microsoft consiglia tutti i nuovi sviluppi di usare Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?
La cache locale è una funzionalità di Microsoft Azure Cache che migliora le prestazioni riducendo le richieste di rete alle cache remote. Microsoft Azure Cache archivia gli oggetti in formato serializzato in una cache in memoria distribuita su più server. Quando tramite un'applicazione viene richiesto un oggetto dalla cache, viene identificato il server in cui è archiviato l'oggetto. Tramite questo server l'oggetto serializzato viene quindi inviato, attraverso la rete, all'applicazione da cui è stata effettuata la richiesta. L'applicazione quindi deserializza l'oggetto per usarlo. Per accelerare il processo di recupero di un oggetto, abilitare la cache locale.
Informazioni generali sulla cache locale
Quando la cache locale è abilitata, il client della cache archivia un riferimento all'oggetto a livello locale. Questo riferimento locale mantiene l'oggetto attivo nella memoria dell'applicazione client. Quando l'applicazione richiede l'oggetto, il client della cache controlla se l'oggetto risiede nella cache locale. In caso affermativo, il riferimento all'oggetto viene restituito immediatamente senza contattare il server. Se invece non risiede nella cache locale, l'oggetto viene recuperato dal server. Il client della cache deserializza quindi l'oggetto e archivia nella cache locale il riferimento a questo oggetto appena recuperato. L'applicazione client usa questo stesso oggetto.
La durata di un oggetto nella cache locale dipende dal numero massimo di oggetti nella cache locale e dal criterio di invalidamento. Esistono due tipi di invalidazione per la cache locale: invalidazione basata sul timeout e invalidazione basata su notifica. Per altre informazioni, vedere Scadenza e rimozione in Cache In-Role di Azure.
Impostazioni di configurazione
La cache locale può essere abilitata e configurata usando il file web.config o il file di configurazione dell'applicazione. È possibile aggiungere un elemento localCache alla sezione dataCacheClient . Nella tabella seguente sono elencati gli attributi dell'elemento localCache .
Attributo | Descrizione |
---|---|
Isenabled |
Impostare l'attributo su |
Sincronizzazione |
Determina la modalità di invalidamento della cache locale. I valori possibili sono |
objectCount |
Numero massimo di oggetti che si possono archiviare nella cache locale. Il valore predefinito è 10000. |
ttlValue |
Numero di secondi di permanenza degli oggetti nella cache locale. Il valore predefinito è 300 secondi. |
Il valore TimeoutBased
di sincronizzazione mantiene gli oggetti memorizzati nella cache in locale fino al raggiungimento del limite ttlValue. Il valore NotificationBased
usa le notifiche insieme al meccanismo basato sul timeout. Per usare le notifiche per l'invalidamento, abilitare le notifiche per la cache. L'intervallo di polling per le notifiche verifica se gli elementi nella cache locale sono cambiati. Un intervallo di polling efficace per le notifiche deve essere più breve dell'impostazione ttlValue per essere efficace. Un elemento di addizione, clientNotification, può essere usato per configurare l'intervallo di polling per le notifiche impostando l'attributo pollInterval sul numero di secondi. Il valore predefinito è 300 secondi.
Nota
Le notifiche sono una funzionalità di cache In-Role supportata solo nelle cache ospitate nei ruoli di Azure.
Esempio
L'esempio seguente mostra una sezione dataCacheClient che usa la cache locale con scadenza locale basata su timeout di cinque minuti (300 secondi).
<dataCacheClient name="default">
<!-- Other configuration settings for cache -->
<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />
</dataCacheClient>
L'esempio seguente mostra la sezione dataCacheClient precedente modificata per usare le notifiche per fornire una sincronizzazione aggiuntiva eseguendo il polling ogni minuto (60 secondi). Le notifiche sono supportate solo con cache di In-Role basata sui ruoli.
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="WebRole1" />
<localCache isEnabled="true" sync="NotificationBased" objectCount="100000" ttlValue="300" />
<clientNotification pollInterval="60" />
</dataCacheClient>
Per scaricare un esempio che usa la cache locale, vedere l'esempio di API e prestazioni di Caching.