Zwischenspeichern von mehreren Versionen der Benutzersteuerelementausgabe

Aktualisiert: November 2007

Genauso wie Sie die Versionen einer Seite variieren können, die im Ausgabecache zwischengespeichert werden, haben Sie die Möglichkeit, Bereiche einer Seite mit Benutzersteuerelementen im Ausgabecache abzulegen. Dazu können Sie die Benutzersteuerelementausgabe anhand des Steuerelementnamens und der GET-Abfragezeichenfolge, der POST-Formularparameter oder lediglich anhand der Parameterwerte variieren. Zusätzlich können mehrere Versionen eines Benutzersteuerelements auf einer Seite zwischengespeichert werden, indem Sie das Steuerelement mehrfach in der enthaltenden ASPX-Datei deklarieren. Diese Techniken sind beliebig einsetzbar, unabhängig davon, ob Sie die Ausgabezwischenspeicherung für das Benutzersteuerelement mit der @ OutputCache-Direktive in der ASCX-Datei oder mit dem PartialCachingAttribute-Attribut festlegen, wenn Sie das Benutzersteuerelement in einer Code-Behind-Klasse entwickeln.

Die @ OutputCache-Direktive für Benutzersteuerelemente unterstützt vier Attribute, VaryByParam, VaryByCustom, VaryByControl und Shared. Die PartialCachingAttribute-Klasse enthält vier Eigenschaften, mit denen Sie dieselben Techniken verwenden können, indem Sie einem Benutzersteuerelement der Code-Behind-Klasse ein Attribut hinzufügen: VaryByParams, VaryByControls, VaryByCustom und Shared.

Wenn eine ASP.NET-Seite, die ein Benutzersteuerelement mit Ausgabecacheeinstellungen enthält, zum ersten Mal angefordert wird, wird eine Instanz der Ausgabe des Steuerelements im Speicher gespeichert. In der Standardeinstellung fügt jede Seite mit demselben Benutzersteuerelement dem Speicher eine weitere Instanz der Ausgabe des Steuerelements hinzu, wenn sie aufgerufen wird.

Wenn Sie z. B. ein Benutzersteuerelement mit dem Namen Sample.ascx mit Ausgabecacheeinstellungen erstellt und Sample.ascx zu 25 ASP.NET-Seiten in der Anwendung hinzugefügt haben, werden mindestens so viele Versionen von Sample.ascx im Ausgabecache gespeichert. Wenn Sie außerdem das VaryByControl-Attribut, das VaryByCustom-Attribut oder das VaryByParam-Attribut zum Ändern des Zwischenspeicherungsverhaltens des Benutzersteuerelements verwenden, kann der Cache noch viele weitere Versionen der Ausgabe des Benutzersteuerelements enthalten. Nehmen wir beispielsweise an, Sie schließen ein TextBox-Webserversteuerelement in das Benutzersteuerelement ein und legen die ID-Eigenschaft auf MyTextBox fest. Wenn Sie das VaryByControl-Attribut auf MyTextBox festlegen, wird eine Version der Ausgabe des Benutzersteuerelements für jeden Wert im Cache gespeichert, den das Steuerelement MyTextBox empfängt.

Bei Verwendung desselben Benutzersteuerelements auf mehreren Seiten innerhalb derselben Anwendung können Sie Speicherplatz sparen, indem Sie das Shared-Attribut der @ OutputCache-Direktive des Benutzersteuerelements auf true festlegen oder die Shared-Eigenschaft auf dem PartialCachingAttribute-Attribut des Steuerelements auf true festlegen. Dies bedeutet, dass jede Seite auf dieselbe Instanz der Ausgabe des Benutzersteuerelements zugreift. Durch Verwenden der Shared-Eigenschaft bei Benutzersteuerelementen, die häufig verwendet und zwischengespeichert werden, kann eine beträchtliche Menge Speicherplatz eingespart werden.

Zwischen dem Hinzufügen der Ausgabe von Benutzersteuerelementen zum Ausgabecache und demselben Verfahren für Seitenausgaben besteht ein wichtiger Unterschied. Obwohl der Ausgabecache für beide Verfahren die Verwendung der GET-Abfragezeichenfolgen-Parameter und POST-Formularparameter zum Erstellen und Zwischenspeichern mehrerer Ausgabeversionen unterstützt, bieten Benutzersteuerelemente keine Unterstützung für das Zwischenspeichern auf der Basis von HTTP-Headern.

Es gibt vier Techniken, um die Ausgabe zwischengespeicherter Benutzersteuerelemente zu variieren:

  • Sie können das VaryByParam-Attribut oder die VaryByParams-Eigenschaft der PartialCachingAttribute-Klasse verwenden, die die gleichen Funktionen für das Zwischenspeichern der Seitenausgabe bieten. Beide können auf eine beliebige Zeichenfolge festgelegt werden, diese muss jedoch den GET-Abfragezeichenfolgen-Parametern oder POST-Formularparametern entsprechen, die dem erstellten Benutzersteuerelement zugeordnet sind.

  • Mit dem VaryByControl-Attribut oder der VaryByControls-Eigenschaft der PartialCachingAttribute-Klasse können Sie das Benutzersteuerelement mit zwischengespeicherter Ausgabe entsprechend der ID-Eigenschaft eines ASP.NET-Serversteuerelements variieren, das im Benutzersteuerelement enthalten ist.

  • Mit dem VaryByCustom-Attribut oder der VaryByCustom-Eigenschaft der PartialCachingAttribute-Klasse können Sie Code für eine benutzerdefinierte Zeichenfolge definieren, anhand der die zwischengespeicherte Ausgabe des Benutzersteuerelements variiert werden soll. Dies geschieht auf dieselbe Weise wie bei der Technik mit dem VaryByControl-Attribut zum Variieren der Zwischenspeicherung von Seitenausgaben. Weitere Informationen finden Sie unter Gewusst wie: Zwischenspeichern von Versionen einer Seite mithilfe von benutzerdefinierten Zeichenfolgen.

  • Sie können mehrere Instanzen eines Benutzersteuerelements in eine ASP.NET-Seite einschließen. Sofern Sie das Shared-Attribut der @ OutputCache-Direktive nicht auf true festlegen, wird die Ausgabe für jede Instanz des Steuerelements zwischengespeichert.

Weitere Informationen zu jedem dieser Themen finden Sie unter Gewusst wie: Zwischenspeichern von mehreren Versionen eines Benutzersteuerelements auf der Basis von Parametern und Gewusst wie: Zwischenspeichern mehrerer Versionen eines Benutzersteuerelements mithilfe deklarativer Attribute.

Siehe auch

Aufgaben

Gewusst wie: Zwischenspeichern von mehreren Versionen eines Benutzersteuerelements auf der Basis von Parametern

Gewusst wie: Zwischenspeichern mehrerer Versionen eines Benutzersteuerelements mithilfe deklarativer Attribute

Konzepte

Übersicht über das Zwischenspeichern in ASP.NET

Zwischenspeichern von ASP.NET-Seiten

Zwischenspeichern mehrerer Versionen einer Seite

Weitere Ressourcen

Neues bei der ASP.NET-Zwischenspeicherung