Ich schreibe eine ASP.NET MVC-Website, die die Möglichkeit für Benutzer, Konten zu erstellen und sich anmelden enthält. Da ich auch wollen, um die Website aggressiv Cache, Ich habe Probleme bei der Kombination von Caching und Authentifizierung.
Auf jeder Seite gebe ich oben, wenn der Benutzer eingeloggt ist, seinen Benutzernamen, einen Link zu seinem Profil und einen Link zum Abmelden aus. Wenn er nicht angemeldet ist, gebe ich einen Standard-Login-Link aus. Außerdem werden auf der Seite selbst einige Inhalte für nicht authentifizierte Benutzer nicht angezeigt, während andere Inhalte davon abhängen, welcher Benutzer angemeldet ist.
Ich habe vor einiger Zeit versucht, dieses Problem zu lösen, indem ich das Stack Overflow-Team gefragt habe, wie sie das Problem gelöst haben. Jeff antwortete, dass sie im Grunde überhaupt kein Caching für nicht authentifizierte Benutzer durchführen. Also schrieb ich ein Attribut, das von OutputCacheAttribute abgeleitet ist, aber hebt die Zwischenspeicherung auf, wenn der Benutzer eingeloggt ist .
Derzeit verwende ich dieses Attribut, aber ich erhalte falsche Ergebnisse in einigen Fällen. Zum Beispiel kann der Benutzer eine Seite besuchen, sich dann anmelden und dann die Seite erneut besuchen, nur um den Anmeldelink oben zu sehen und nicht seinen Benutzernamen.
Hier sind einige Lösungen, die ich in Betracht ziehe:
- Einstellung der
HttpCacheability
ouCache-Control
Typ zuprivate
stattpublic
. Auf diese Weise wird die Antwort nur auf der Client-Seite zwischengespeichert. Wird dadurch das Problem behoben? Wenn ja, hat dies Auswirkungen auf die Effizienz des Caching? Ich habe festgestellt, dass Stack Overflow anscheinendpublic
Allerdings. - Einrichten eines VaryByCustom-Parameters, um für jeden Benutzer einen anderen Cache einzurichten como in diesem Lernprogramm . Kann dies helfen und gleichzeitig die Effizienz und Effektivität des Caching aufrechterhalten?
Vielen Dank im Voraus!