33 messaggi dal 17 febbraio 2015
Ciao a tutti!

Vorrei avere alcune informazioni per quanto riguarda la cache di Razor WebCache.Get(cacheItemKey);


1) è possibile conoscere quanti dati sono stati inseriti attualmente in cache?
Io ho inserito in cache dati sotto forma di variabili, così:
var Regioni = "Piemonte,Lombardia,Marche,...";
var Nomi = "Luigi,Simona,Piero,...";
...


2) è possibile eliminare (svuotare) tutta la cache in un solo momento? Quindi eliminare "Regioni", "Nomi", ecc...


Grazie per la vostra collaborazione!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la tua è un'applicazione ASP.NET WebPages o ASP.NET MVC?


è possibile conoscere quanti dati sono stati inseriti attualmente in cache?
è possibile eliminare (svuotare) tutta la cache in un solo momento?

No ad entrambe se usi WebCache. Dalla documentazione si vede che questa API possiede dei metodi per recuperare, impostare od eliminare dei valori conoscendone la chiave. Non puoi enumerare le chiavi o cancellarle tutte in maniera massiva.

Però, spiega bene come mai hai questo problema. "Piemonte, Lombardia, Marche" non vengono forse inserite in cache con una chiave ben nota, così come i nomi di persona? Se è così, non potresti semplicemente invocare il Remove per tutte le chiavi?
WebCache.Remove("Regioni");
WebCache.Remove("NomiDiPersona");


Non so se ti può aiutare, ma puoi limitare nel tempo la durata in cache di un dato valore. Il metodo Set ti permette di indicare una scadenza assoluta da esprimere in minuti oppure un intervallo di tempo che si rinnova automaticamente ad ogni accesso alla chiave (così che solo quelle inutilizzate verranno presto rimosse dalla cache).

Quand'è, esattamente, che vuoi svuotare la cache? In corrispondenza di un evento particolare, come l'aggiornamento del database?

ciao,
Moreno

Enjoy learning and just keep making
33 messaggi dal 17 febbraio 2015
Ciao BrightSoul!

Rispondendo alle tue domande:

- la mia è un applicazione ASP.NET WebPages interamente in Razor (no MVC).

- ... "Però, spiega bene come mai hai questo problema. "Piemonte, Lombardia, Marche" non vengono forse inserite in cache con una chiave ben nota, così come i nomi di persona? Se è così, non potresti semplicemente invocare il Remove per tutte le chiavi?
WebCache.Remove("Regioni");
WebCache.Remove("NomiDiPersona");"

E' questo il problema! Siccome creo parecchie 'chiavi' automaticamente, è un problema ricordarle tutte.

- La cache la vorrei svuotare con un pulsante manualmente.

Grazie per la collaborazione!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
tramite i metodi della classe WebCache non mi sembra che si possa fare. Tuttavia, WebCache è una façade per MemoryCache quindi quando vuoi fare la cancellazione delle chiavi puoi agire direttamente su quella, che offre un ventaglio più ampio di metodi.

Prova ad usare questo codice: serve ad enumerare tutte le chiavi e ad eliminarle:
var memoryCache = System.Runtime.Caching.MemoryCache.Default;
foreach (var pair in memoryCache)
{
    memoryCache.Remove(pair.Key);
}


Nel tuo progetto dovrai aggiungere un riferimento a System.Runtime.Caching, se non ci fosse già.

ciao,
Moreno
Modificato da BrightSoul il 21 agosto 2015 17.45 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.