13 Stimmen

ASP.NET MVC-Zwischenspeicherung variiert je nach Authentifizierung

Ich verwende ASP.NET Preview 5 (wird bald auf Beta aktualisiert) mit LINQ2SQL auf meinem kürzlich kleine Webapp gestartet .

Ich war so stolz auf meine Arbeit, bis Silverlight.net sie auf der ersten Seite vorstellte und sie eine mehr als bescheidene Anzahl von Besuchern erhielt.

Aus irgendeinem Grund erhalten Benutzer manchmal die Meldung "Specified cast invalid" von LINQ2SQL - dies liegt daran, dass nicht authentifizierte Benutzer als "Guest"-Benutzer behandelt werden und der Controller bei jedem Treffer Informationen über den Benutzer "Guest" lädt.

Auf der ersten Seite befindet sich oben ein "Willkommen [BENUTZERNAME]", das sich leicht mit Donut-Caching .

Unten in der Mitte gibt es jedoch einen "Was ist Dudlers.com"-Block, der nur unauthentifizierten Benutzern angezeigt werden sollte, und einen weiteren "Über Sie"-Block, der nur authentifizierten Benutzern angezeigt werden sollte. Diese Blöcke sind zu kompliziert, um mit Donut Caching zwischengespeichert zu werden; sie sind viel zu unterschiedlich, es würde sehr unübersichtlich werden.

Ich möchte die erste in Abhängigkeit vom Authentifizierungsstatus des Benutzers zwischenspeichern. So nicht authentifizierte Benutzer (unnötig zu sagen, die Mehrheit) erhalten die "Gast" gecachte Seite, und andere authentifizierte Benutzer werden eine frische nicht gecachte Seite angezeigt.

Gibt es eine Option, um die Zwischenspeicherung nach Authentifizierung zu variieren? [OutputCache(VaryBy = Authentifizierung)]

Oder gibt es eine andere nicht-ASP.NET MVC-Lösung? (vielleicht Tuning MS SQL)

Ich hoffe, meine Frage ist klar. Ich verwende Windows 2003 und MS SQL 2005 Express auf demselben dedizierten Server.

Ich danke Ihnen!

11voto

Ben Scheirman Punkte 39742

Sie müssen den Donut-Caching-Mechanismus nicht verwenden. ASP.NET hat die VaryByCustom Option, mit der Sie festlegen können, wie die Zwischenspeicherung variiert werden soll.

Hier finden Sie weitere Informationen: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

Sollte für ASP.NET MVC gut funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X