Domanda

Ho un'applicazione web che è del 99% in sola lettura, con un servizio separato che aggiorna il database a intervalli specifici (come ogni 10 minuti). Come può questo servizio dire l'applicazione di invalidare essa la cache di secondo livello? E 'davvero importante? (Io in realtà non importa se ho dati troppo stantio) Se non invalidare la cache di quanto è necessario molto tempo per le registrazioni per ottenere aggiornati (se si utilizza SysCache)

È stato utile?

Soluzione

È possibile disporre manualmente la cache di 2 ° livello per una determinata entità, tipo di entità o di una collezione.

http: // Knol .google.com / k / fabio-Maulo / NHibernate-capitolo-16-miglioramento / 1nr4enxv3dpeq / 19 #

Per la cache di secondo livello, ci sono metodi definiti ISessionFactory per sfrattando lo stato della cache di un'istanza, intera classe, istanza raccolta o intera ruolo raccolta.

sessionFactory.Evict(typeof(Cat), catId); //evict a particular Cat
sessionFactory.Evict(typeof(Cat));  //evict all Cats
sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //evict a particular collection of kittens
sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections

Altri suggerimenti

Se sei OK con la possibilità di avere alcuni dati non aggiornati, basta impostare la scadenza predefinita a qualcosa che hai dimestichezza con, e ti verrà impostato.

Esempio:

<property name="cache.default_expiration">120</property>

Imposta la scadenza predefinita per due minuti, in modo da non vedrai mai dati non aggiornati più vecchio di quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top