none
Cache.Remove che non remove .. RRS feed

  • Discussione generale

  • ciao a tutti, nella mia applicazione asp.net 2.0 ho implementato una messaggistica tra utenti, come i messaggi privati che si scambiano nei forum.

    Dalla MasterPage (e quindi in tutto il sito) scorro una collezione List(of  ..) estratta da db per vedere se ci sono messaggi non letti per l'utente in questione.

    Essendo questa operazione ripetuta per ogni pagina, ho pensato di andare incontro alle performace, mettendo in cache la lista per 1 minuto.

    HttpRuntime.Cache.Insert("LST_LastMessage", _myLST_LastMessage, Nothing, DateTime.Now.AddMinutes(1), TimeSpan.Zero, CacheItemPriority.Default, Nothing)

    All'avvenuta lettura di un messaggio qualsiasi di qualsiasi utente, oppure alla scrittura di un nuovo messaggio chiamo

    Cache.Remove("LST_LastMessage") il che dovrebbe invalidarmi la cache del mio oggetto

     If HttpRuntime.Cache("LST_LastMessage") Is Nothing Then
                LoadDataFromDb()
        Else
                _myLST_LastMessage = HttpRuntime.Cache("LST_LastMessage")
            End If

    ora questo sembra non avvenire. Per foruna la cache dei dati dura 1 minuto solo, quindi facendo le prove poco dopo ottendo il risultato voluto.

    Fatto sta che leggendo tutti i messaggi privati del mio utente (e ad ogni lettua invalido al cache), quando arrivo all'ultimo il messaggio che mi segnala nuovi messaggi non letti compare ancora.

    Avete qualche idea ?

     

     


    giovedì 30 settembre 2010 09:05

Tutte le risposte

  • mah, furberscamente eliminando i l'alert di nuovi messaggi per la pagina dove si leggono, il tutto sembra funzionare, perchè l'utente esce va in altre pagine e pare che la cache sia scaduta effettivamente.

    Come tutte le volte quando si debugga cose del genere, accorgersi che và o no è sempre un pò complicato

    giovedì 30 settembre 2010 09:19