Sto scrivendo un sito ASP.NET MVC che include la possibilità per gli utenti di creare account e accedere. Come voglio anche memorizzare il sito in modo aggressivo, Sono in esecuzione in alcuni problemi mescolando il caching con l'autenticazione.OutputCache dilemma con autenticazione in ASP.NET MVC
Su ogni pagina, nella parte superiore, se l'utente ha effettuato l'accesso, invio il nome utente, un collegamento al proprio profilo e un collegamento per disconnettersi. Se non sono connessi, emetto un collegamento di accesso standard. Inoltre, nella pagina stessa, alcuni contenuti non vengono mostrati agli utenti non autenticati, mentre altri contenuti dipendono da quale utente è connesso.
Ho tentato per la prima volta di risolvere questo problema qualche tempo fa chiedendo al team Stack Overflow come hanno risolto il problema. Jeff ha risposto che in pratica non fanno alcun caching per gli utenti non autenticati. Quindi, ho scritto un attributo che deriva da OutputCacheAttribute ma annulla il caching se l'utente ha effettuato il login.
Attualmente, sto utilizzando quell'attributo, ma in alcuni casi sto ottenendo risultati errati. Ad esempio, l'utente può visitare alcune pagine, quindi accedere, quindi visitare nuovamente la pagina, solo per visualizzare il link di accesso in alto, piuttosto che il loro nome utente.
Qui ci sono alcune soluzioni che sto valutando:
- Impostazione del tipo
HttpCacheability
oCache-Control
-private
, piuttosto chepublic
. In questo modo, la risposta viene memorizzata solo nella cache lato client. Questo risolverà il problema? Se lo fa, questo avrà un effetto sull'efficienza della memorizzazione nella cache? Ho notato che Stack Overflow sembra utilizzarepublic
, tuttavia. - Impostazione di un parametro VaryByCustom per memorizzare in cache in modo diverso per ciascun utente, ad esempio in this tutorial. Questo aiuterà, pur mantenendo l'efficienza e l'efficacia della memorizzazione nella cache?
Grazie in anticipo!