Ciao buongiorno e grazie della tua risposta....andiamo in ordine...il mio scopo per l'utilizzo della cache sta nel fatto di avere tempi di risposta delle pagine + velocemente e pertanto dato che posso essere effettuate diverse richieste sulla stessa pagina invece di ricreare connessione al db e pagina ho pensato all'utilizzo della cache e quindi avere maggiori prestazioni in termini di velocità per quanto riguarda la visualizzazione dei dati ecco perchè speravo che venisse utilizzata la cache del client. Ma se centinaia di utenti contemporaneamente dovessero utilizzare il mio servizio di ricerca, non crea problemi al server gestire tutto in cache? In pratica ho fatto una sorta di mini motore di ricerca nell'ambito catena di cooperative e ci sono centinaia di persone che possono fare allo stesso tempo diverse ricerche utilizzando la stessa pagina web (stile google :-) ) e quindi il mio scopo è che quando ottengo i risultati, distribuiti anche per pagina (quindi utilizzo un datapager) non voglio che si venga sempre ad utilizzare la connessione al db, questa solo se cambiano i parametri di ricerca.
Adesso tornando al codice che mi hai postato, che codice potrei inserire per ovviare al fatto che il ciclo while potrebbe essere bloccato?
riassemblando il mio codice con le tue migliorie il risultato sarebbe questo?
Public Function GetLista() As IList(Of PropertyUtente)
Dim lst As IList(Of PropertyUtente) = TryCast(Cache("result"), IList(Of PropertyUtente))
While lst Is Nothing
Cache("result") = Loadsearch.Search(_str1, _str2)
lst = TryCast(Cache("result"), IList(Of PropertyUtente))
End While
Return lst
End Function
RadListView1.DataSource = lst
RadListView1.DataBind()
per quanto riguarda questo codice:
%@ OutputCache duration="10" VaryByParam="string1,string2" %>..
pensavo di aver capito leggendo in rete che fino a quando non scade la durata impostato da me o fino a quando non cambiano i valori passati nelle variabili indicate, l'utente utilizzasse i dati salvati in cache senza dover ricorre alla connessione al db...quindi il codice che mi hai postato con questo codice di outputcache possono essere utilizzati entrambi...
Faccio un esempio banale per capire meglio:
supponiamo che io voglio ricercare la parola: anguria. L'utente esegue la ricerca, essendo la prima volta il programma si connette al db preleva i dati li passa in cache e li far vedere a video all'utente, essendo molti dati la pagina è progettata come fa google a far vedere i primi 10 risultati e poi gli altri devono essere sfogliati. Ora il mio scopo è la velocità e soprattutto evitare di ripetere la chiamata al database se l'utente deve solo vedere i dati relativi alla parola "Anguria" quindi secondo la mia logica passo tutti i dati in cache così anche quando deve sfogliare le altre pagine i dati non vengono presi dal db. Fin qui ragione bene? Poi io voglio e qui subentrava il codice (%@ OutputCache duration="10" VaryByParam="string1,string2" %>..) che se l'utente non vuole più ricercare la parola anguria allora cambiando uno dei parametri, avviando la ricerca deve essere effettuata la connessione al database di nuove e ripetere l'iter di riempire la cache con i nuovi dati. Oppure se scade il tempo della cache (impostata da me) ripetere la connessione al db. Giusto tutto questo? Quindi ricapitolando...con il codice che mi hai postato, e con l'aggiunta della stringa html (%@ OutputCache duration="10" VaryByParam="string1,string2" %>..) ottengo questo risultato?
Oppure la parte del codice che te mi hai postato è una cosa mentre questa string OutputCache...svolge un'altra funzione e quindi non possono essere utilizzate entrambe?
Comunque ti ho riassunto il mio problema e quello che vorrei ottenere, se mi puoi dare qualche consiglio te ne sarei grato
ciao e grazie mille dell'aiuto
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com