Sie sind richtig in Ihre Annahmen.
Ihre OutputCache-Direktive weist den Ausgabe-Caching-Mechanismus an, die gesamte Seite für eine bestimmte URL für 600 Sekunden zwischenzuspeichern.
In Ihrem einfachen Beispiel verwenden Sie wahrscheinlich keine Abfragezeichenfolgen. Mit der VaryByParam-Deklaration innerhalb der Direktive können Sie jedoch einen Abfragezeichenfolgenparameter angeben, der sicherstellt, dass jeder unterschiedliche Wert dieses Parameters separat zwischengespeichert wird. Zum Beispiel, wenn Sie hat:
<%@ OutputCache Duration="600" VaryByParam="ProductID"%>
dann diese drei verschiedenen URLs würden jeweils einzeln zwischengespeichert werden, und den Wert der „ProductID“ Parameter, um etwas zu ändern noch nicht im Cache gespeichert würde sicherstellen, dass die Seite verarbeitet und wiedergegeben durch richtig die ASP.NET-Laufzeit:
http://www.example.com/viewproduct.aspx?ProductID=123
http://www.example.com/viewproduct.aspx?ProductID=3
http://www.example.com/viewproduct.aspx?ProductID=67
in Ihrem Beispiel auf Ihrer Schaltfläche klicken, wird die Seite bereits vorher gemacht worden (und cached) und wenn Sie wieder Post gibt es keinen Unterschied in der URL, die Sie Zurückspeichern und effektiv neu laden, daher zeigt die ASP.NET-Laufzeit die zwischengespeicherte Seite an, ohne sie zu durchlaufen e Prozess des erneuten Renderns.
Anders als durch Ändern des Werts eines "VaryByParam" -Parameters ist die OutputCache-Direktive ein ziemlich "Alles-oder-Nichts" -Ansatz zum Seitencachen. Es gibt ein "VaryByContol" -Attribut für die Direktive, das jedoch nur in ASP.NET-Benutzersteuerelementen verwendet werden kann, sondern eine vollständige ASP.NET-Webseite.
Von Ihrer Frage, es klingt eher wie Sie teilweise Seite Caching untersuchen müssen. Entweder das oder ein Mechanismus zum Ungültigmachen des Caches, wenn ein Ereignis eintritt. Dies geschieht normalerweise durch Hinzufügen einer "Cache-Abhängigkeit".
Dafür sollten die folgenden Links helfen:
Caching Portions of an ASP.NET Page
Tip/Trick: Implement "Donut Caching" with the ASP.NET 2.0 Output Cache Substitution Feature
Programmatically Removing a Page from the OutputCache
Kannst du ein Beispiel heiß, meine post-Parameter als VaryByParam verwenden? – lnetanel
sicher, <% @ OutputCache Duration = "600" VaryByParam = "YourPostParam1, YourPostParam2, (auch alle GET-Parameter), ..."%> – user134706
Ich habe das herausgefunden, bevor wir diesen Post gefunden haben - wir hatten tatsächlich ein Problem damit ein Live-Rollout, weil wir VaryByParam auf "none" gesetzt hatten, wo Seiten auf sich selbst zurückschicken! –