Was ist die aktuelle Praxis für teilweises Caching in ASP MVC2?

8

Meine Webseiten bestehen aus zwei Arten von Inhalten. Die erste ist variabel zwischen Benutzern, aber konstant für alle Seiten. Die zweite ist für alle Benutzer konstant, aber variabel zwischen den Seiten. Dies ist ein übliches Layout. Was ist der beste Weg, um Output-Caching auf solche Inhalte anzuwenden?

Wie ich es verstehe, ist der Html.Substitute-Helper mit der MVC2-Rendering-Pipeline inkompatibel, wodurch die alte Methode des Donut-Caching beseitigt wird.

Verwenden Sie das normale Ausgabe-Caching mit VaryByParam="user" für jede Seite?

Das Spezifitätsniveau würde den Wert der Ausgabezwischenspeicherung verringern. Es ist unwahrscheinlich, dass derselbe Benutzer die gleiche Seite sehr oft innerhalb der Lebensdauer der zwischengespeicherten Ausgabe anzeigt.

Verwenden Sie ein alternatives OutputCache-Subsystem

Es gibt mehrere Versuche im Internet zu schweben, die das OutputCache-Attribut und das Rendering-Subsystem modifizieren, um die Substitution zu unterstützen. Der beste, den ich gefunden habe, ist hier .

Die verschiedenen Snippets, die ich gefunden habe, scheinen jedoch informelle Implementierungen zu sein und werden nicht gut unterstützt. Außerdem bin ich geneigt zu vermuten, dass wenn es so einfach wäre, die Substitution wieder in die MVC2-Pipeline einzufügen, dies geschehen wäre.

Verfassen Sie die letzte Seite aus mehreren untergeordneten Aktionen, die einzeln zwischengespeichert werden

Die Aktionsmethode würde nicht mit einem OutputCache -Attribut gekennzeichnet werden und würde eine Ansicht zurückgeben, die mehrere Html.RenderAction -Aufrufe enthält, die unabhängig voneinander zwischengespeicherten Inhalt abrufen würden. Abgesehen von den etwas schwergewichtigen Auswirkungen der Verwendung von RenderAction , würde es eine zusätzliche Schicht von Indirektion und Code-Geruch hinzufügen.

Welche Erfahrung haben Sie mit der Erstellung von unabhängig zwischengespeicherten Inhalten in MVC2? Was hat gut funktioniert und was nicht?

    
Kennet Belenky 13.10.2010, 18:09
quelle

1 Antwort

1

Bitte werfen Sie einen Blick auf diese Frage und auch auf info wie stackoverflow kann dies Ihnen helfen.

    
Restuta 11.01.2011 22:35
quelle