2013-02-07 14 views
5

Qual è la differenza tra le proprietà Cache e Items della classe ?Qual è la differenza tra la cache di HttpContext e le proprietà degli elementi?

Dalla documentazione MSDN:

Cache
ottiene l'oggetto Cache per il dominio applicazione corrente.

Articoli
Ottiene una raccolta chiave/valore che può essere utilizzato per organizzare e condividere i dati tra un'interfaccia IHttpModule e un'interfaccia IHttpHandler durante una richiesta HTTP.

Non capisco cosa stia cercando di spiegare quella documentazione.

Mentre lavoro su applicazioni Web ASP.NET, ho spesso utilizzato Items per la memorizzazione nella cache dei dati per richiesta in modo che più controlli utente non finiscano per cercare gli stessi dati dal database. Questo è descritto in this article.

Oggi, tuttavia, mi sono imbattuto in usi della proprietà Cache per la memorizzazione nella cache, a seconda della richiesta. Ho cercato di capire la differenza ma non sono riuscito a trovare alcuna documentazione valida confrontando questi due. Quindi mi piacerebbe sapere ...

Qual è la differenza tra le proprietà della cache e degli elementi di HttpContext? Si prega di provare ad elaborare con esempi di perché si dovrebbe scegliere di utilizzare uno sull'altro in diversi scenari del mondo reale.

risposta

10

Gli articoli sono per richiesta, quindi è disponibile solo per quell'utente specificato per quella determinata richiesta HTTP. La cache viene archiviata in memoria per un periodo di tempo persistente e non dipende dall'utente specifico. Quindi la cache può essere condivisa tra più utenti attraverso più richieste, ma gli articoli sono per utente per richiesta.

Dipende da quanto tempo si desidera che i dati siano disponibili. Uso articoli per archiviare oggetti come ObjectContext o DbContext in EF, che voglio solo condividere per quella determinata richiesta. Ma i dati della tabella di riferimento verranno utilizzati da tutti gli utenti su molte richieste, quindi il caching sarebbe meglio.

+0

C'è qualcosa nella richiesta utilizzata per partizionare i dati di 'Cache'? Abbiamo una web-app che serve richieste su molti domini diversi, un dominio per utente. Sembra che il codice che sto mantenendo si basi sui diversi domini per separare i dati della cache per utente. Quello che voglio dire è che i dati specifici dell'utente vengono memorizzati nella cache senza alcun ID utente o nulla nella chiave. Come potrebbe funzionare? Inoltre, nell'articolo a cui mi sono collegato, stanno usando userID nella chiave 'Items', il che mi fa pensare che' Items' è condiviso tra le richieste di molti utenti. Ora sono più confuso di prima ... –

+0

Cache o Session, perché Session è specifica dell'utente. È inoltre possibile rendere la cache specifica per l'utente aggiungendo l'ID dell'utente alla chiave di cache ... quindi ogni utente può avere le proprie voci specifiche della cache. Nell'articolo che hai fornito, l'approccio che hanno fornito ha dato la possibilità di condividere i dati in HttpContext.Items a più controlli utente o controlli personalizzati, ma solo all'interno della richiesta corrente per quell'utente. La raccolta Articoli viene quindi creata su ogni richiesta, quindi i dati saranno nuovamente disponibili alla successiva richiesta. –

Problemi correlati