Microsoft ASP.NET-Ausgabecache Bietet Funktionen zum Zwischenspeichern gerenderter Inhalte von ASP.NET-Seiten oder Benutzersteuerelementen für eine bestimmte Dauer. Dadurch kann Ihre ASP.NET-Anwendung alle nachfolgenden Anforderungen aus dem Cache bedienen, anstatt eine Seite erneut zu rendern und auszuführen.
Sie fügen das hinzu <% @OutputCache %> Anweisung auf der Seite, um den ASP.NET-Ausgabecache zu verwenden.
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
ASP.NET-Ausgabecaching ist eine sehr nützliche Funktion, insbesondere in Situationen, in denen häufiger auf eine Seite zugegriffen wird als sie sich ändert und Sie sie aus dem Cache bereitstellen. Dies verbessert die Anwendungsleistung, indem die erneute Ausführung von Seiten vermieden wird und auch Ihre teuren Datenbankfahrten reduziert werden, insbesondere wenn die Seite viele schwere Datenbankoperationen erfordert. Dies verbessert auch die Skalierbarkeit der Anwendung, da die Datenbank im Allgemeinen zu einem Skalierbarkeitsengpass wird, wenn es Millionen solcher Seiten und Anforderungen gibt, die Datenbankoperationen beinhalten.
Probleme mit dem ASP.NET-Ausgabecache in der Microsoft Azure-Umgebung
Wenn Sie den Ausgabecache in Microsoft Azure verwenden, wird die Seitenausgabe standardmäßig als InProc in Ihrer Microsoft Azure-Webrolle gespeichert. Das erste Problem dabei besteht darin, dass Sie auf den Speicher beschränkt sind, der auf Ihrer Web-Rolleninstanz verfügbar ist. Dies kann zu einem Problem mit nicht genügend Speicher führen, wenn Sie eine große Menge an Seitenausgabedaten zwischenspeichern. Ein weiteres Problem besteht darin, dass Ihre Anwendung auf mehreren Microsoft Azure Web Role-Instanzen mit Lastausgleich ausgeführt wird. Die nächste Anfrage geht möglicherweise an eine andere Web Role-Instanz, die auch in dieser Instanz eine neue Kopie der ASP.NET-Ausgabecache-Daten erstellt. Diese redundanten Kopien der Seitenausgaben in jeder Web-Rolleninstanz verbrauchen viel zusätzlichen Speicher.
Microsoft Azure Web Role-Instanzen werden außerdem recht häufig zu Wartungs- und Patchzwecken wiederverwendet. In diesem Fall gehen alle Seitenausgaben verloren und Sie müssen alle Seiten erneut ausführen, um den Ausgabecache Ihrer Seite neu zu füllen, was sich negativ auf die Leistung Ihrer Azure-Anwendung auswirkt.
Wie löst man Probleme beim Ausgabe-Caching in Microsoft Azure?
Eine Möglichkeit, all diese Probleme in Microsoft Azure zu lösen, ist die Verwendung eines verteilten Caches, der außerhalb des Prozesses ausgeführt wird und ein gemeinsamer Speicher für alle Microsoft Azure-Webrolleninstanzen ist. ASP.NET 4.0 hat einen Erweiterungspunkt eingeführt, der Entwicklern hilft, einen beliebigen verteilten Cache ihrer Wahl als ASP.NET-Ausgabecachespeicher zu verwenden.
Der verteilte Cache wird von allen Microsoft Azure-Webrollen für Seitenausgaben gemeinsam genutzt, sodass keine redundanten Kopien innerhalb einzelner Webrolleninstanzen erstellt werden. Microsoft Azure-Webrollen werden rein zustandslos, sodass beim Recycling von Webrollen nie Daten verloren gehen. Sie können eine große Datenmenge im verteilten Cache zwischenspeichern, indem Sie die Speicherressourcen aller Cache-Server zusammenfassen. Darüber hinaus reduziert der verteilte Cache die Belastung Ihrer Datenbank, da Sie nicht die Seitenausführungen mit Datenbankaufrufen in jeder Microsoft Azure-Webrolleninstanz separat durchführen müssen.
NCache für Azure ist ein Verteilter In-Memory-Cache für .NET Anwendungen, die in der Microsoft Azure-Cloud bereitgestellt werden. NCache für Azure hat den ASP.NET-Ausgabecache-Anbieter implementiert, den Sie zum Speichern der ASP.NET-Seitenausgabe und zum Beheben aller oben genannten Probleme verwenden können. Zusätzlich bereitstellen NCache als ein Azure-Caching-Dienst Bietet Datenzuverlässigkeit bei der Replikation und verbessert die Skalierbarkeit der Anwendung.
Wie man den Dienst nutzt NCache für den Azure ASP.NET-Ausgabecacheanbieter
Sie können verwenden NCache für Azure für die Ausgabezwischenspeicherung in ASP.NET wie folgt, ohne dass Codeänderungen an Ihrer Microsoft Azure-Anwendung erforderlich sind.
Schritt 1: Referenz hinzufügen von NCache für die Azure Output Cache-Anbieterassembly.
Datei: web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
Schritt 2: Registrieren NCache für Azure Output Cache Provider unterKonfiguration> Abschnitt und stellen Sie Cache-Einstellungen bereit.
Datei: web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
Schritt 3: Fügen Sie die ASP.NET-Ausgabecache-Anweisung auf der Seite hinzu, die Sie zwischenspeichern möchten.
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
Dokumentation: Verwenden von ASP.NET-Ausgabecaching mit NCache
NCache für Azure ASP.NET-Ausgabecachefunktionen
NCache für Azure bietet zahlreiche Funktionen zum Caching und Verwalten des Ausgabe-Cachings von Microsoft Azure. Nachfolgend finden Sie eine Liste davon:
- Geben Sie die Dauer für die Seitenausgabe an: NCache Für Azure können Sie eine Dauer angeben, für die Sie die ASP.NET-Seitenausgabe zwischenspeichern möchten.
- Verschiedene Versionen einer Seite zwischenspeichern: NCache Für Azure können Sie je nach den verschiedenen ASP.NET-Ausgabecache-Anweisungen wie VaryByParam, VaryByCustom und VaryByControl verschiedene Seitenversionen zwischenspeichern. Eine andere Version der Seitenausgabe wird im verteilten Cache gespeichert, wenn für eine Seitenanforderung ein anderer Parameter empfangen wird.
- Verschiedene Teile einer Seite zwischenspeichern: Sie können auch nur Teile der Seite angeben, anstatt die gesamte Seite zwischenzuspeichern. Dies ist für Situationen gedacht, in denen Sie nur den statischen Teil der Seite zwischenspeichern und den dynamischen Teil belassen, der zur Laufzeit gerendert wird.
- Implementieren Sie benutzerdefinierte Hooks für den ASP.NET-Ausgabecache: NCache Für Azure können Sie Ihre benutzerdefinierten Hooks (Schnittstelle) für die Seitenausgabe implementieren und registrieren. Dies dient dazu, Ihren Seitenausgaben einige erweiterte Attribute hinzuzufügen, z NCache für Azure-Datenbankabhängigkeiten, Tags, Gruppen usw.
Zusammenfassung
Wie Sie gesehen haben, können Sie mit dem verteilten Cache ASP.NET-Seitenausgaben zwischenspeichern, wodurch Ihre Anwendungsprobleme mit mehreren Azure-Webrollen mit Lastausgleich gelöst werden. NCache ist ein Azure ASP.NET-Ausgabecache-Anbieter, der zur Verbesserung der Skalierbarkeit und Zuverlässigkeit der ASP.NET-Anwendungsleistung beiträgt.