Web-Infrastruktur

ASP.NET-Webseiten Cache Spurs Leistung und Skalierbarkeit

Iqbal Khan

 

Auf einen Blick:

  • Verringerung der drastisch Engpass
  • Statische und dynamische Web-Zwischenspeicherung
  • Muss Features: Ablaufzeiten, Abhängigkeit PDF teilweise Inhalte mehr Datenbank
  • Spezielle Vorteile für globale Unternehmen
  • Web-Cache-Servercluster
  • Kostenlose und kommerzielle Lösungen

Problem: ASP.NET Engpässe
Lösung: ASP.NET-Cache
Muss haben Features in Webcache
Ablaufzeiten
Laden von Seiten auf Ablaufdaten für
Partial-Page Caching
Datenbank-Abhängigkeit
Datei-Abhängigkeit
PDF teilweise Inhalt
ViewState Zwischenspeichern
GZIP-Komprimierung
Skalierbare und Dynamic Web-Cache-Cluster
Geografische Verteilung der Cache
Einlagerung aus der Datenbank bleiben
Richtlinien

Anwendungen basierend auf Microsofts Webanwendungs-Framework, ASP.NET, sind größere Inroads in die Enterprise vornehmen.Zur gleichen Zeit weiterhin Engpässe entstehen wachsende Anzahl von Benutzern und Transaktionen nachfragen, IT-Experten für verbesserte Leistung und Skalierbarkeit aufrufen.

Problem: ASP.NET Engpässe

Engpässe können in ASP.NET-Anwendungen eine Vielzahl von Gründen auftreten.Die offensichtliche: Data Speichertechnologie ist nicht als skalierbar als Webanwendungen Architektur.Eine beliebige Stelle in einer ASP.NET-Anwendung, die sofort Datenspeicher und Datenzugriff behandelt wird eine Logjam, wenn Sie versuchen, Ihre Anwendung zu skalieren.Zwei Bereiche, wobei in diesem Fall, sind Sitzungsstatus Speicher und die Anwendung Daten aus einer relationalen oder Mainframe-Datenbank (siehe Abbildung 1 ).

Abbildung 1 allgemeine Bereiche Leistung Engpässe in ASP.NET Anwendungen.

Ein weiteres Engpass tritt auf, wenn Ihre ASP.NET-Anwendung Service-orientierter Architektur (SOA) Webdienste aufruft.Hier geschieht die Verlangsamung auf, weil die Webdienste die gleichen Probleme wie Ihre ASP.NET-Anwendung (d. h. in Datenspeicherung und Access) haben.Wahrscheinlich sind, dass eine Web Services-Farm in mehreren Anwendungen gemeinsam genutzt ist und wird daher viel mehr als eine ASP.NET-Anwendung erstellen des Skalierbarkeit Engpass Produktionsbelastung.

Engpässe können auch zwischen den Browser des Benutzers und der Webfarm aus ASP.NET auftreten.Diese Clogs beziehen sich auf die Tatsache, dass ASP.NET-Seiten Zeitpunkt im Zusammenhang mit intensiver CPU-Verarbeitung wiederholt ausgeführt werden müssen.Dieser Prozess beinhaltet außerdem starker Datenelemente (Bilder, Dokumente usw.) wieder an den Benutzer zu senden.

In einer vorherigenTechNet MagazinArtikel erörtert Probleme Leistung und Skalierbarkeit ASP.NET, konzentriert sich auf Sitzungszustand und Anwendungsdaten (Siehe"Bereitstellen von Skalierbarkeit für ASP.NET-Anwendungen"Juni 2009).In diesem Artikel behandelt ich, wie diese Probleme auftreten, dass der ASP.NET-Sitzungszustand eine Logjam, wird wächst eine Webfarm, einschließlich der Gründe.Erläuterten die Tatsache, dass verteilte im Speicher-Cache eine hervorragende Alternative zu Microsoft ist der vorhandenen Speicheroption für ASP.NET Session State.Ich beschrieben, wie Anwendungsdaten von einer Datenbank stammen Skalierbarkeit Engpässe verursachen können.Ich detaillierte auch wie verteilte Zwischenspeicherung löst diese Engpässe ASP.NET-Sitzungszustand Speicher mit Hilfe der verschiedenen Zwischenspeichern Topologien, jeder verschiedene Funktionen, aber alle Adresse Skalierbarkeit bieten und Betriebszeit von 100 Prozent zu gewährleisten.

Schließlich profiliert ich Allgemein die verschiedenen Verteiltes Zwischenspeichern auf dem Markt verfügbaren Optionen.Einige Optionen sind mit eingeschränkten Funktionen frei, während andere mehr stabile und leistungsfähige kommerzieller Produkte sind.Für optimale Leistung und Skalierbarkeit ist es jedoch ratsam Top of Line kommerzieller Produkte berücksichtigt.

Lösung: ASP.NET-Cache

Mit Problem Definition als Hintergrund ist Schwerpunkt in diesem Artikel auf Leistung und Skalierbarkeit Engpässe zwischen der Browser des Benutzers und der Server oder einer Webfarm.Idealerweise sollten Sie die Anzahl der Male zu reduzieren, die die Webseite selbst ausführt.Wenn die Seite einmal ausgeführt und die Ausgabe ist nicht auch kurz ändern, dann warum ausgeführt er erneut?Warum nicht Zwischenspeichern nur die Ausgabe?Dann kann das nächste Mal ein Benutzer nur die Seitenausgabe direkt aus dem Cache, anstatt erneut ausgeführt, es abgerufen werden.Erneutes Ausführen der Seite umfasst die CPU, belegt Speicher und andere Webserver Ressourcen verwendet, und dann natürlich gibt es die Skalierbarkeit Engpass Probleme aus Datenspeicher.

Eine ASP.NET-Seite Ausgabe auf dem Server selbst zwischengespeichert werden kann; Microsoft bietet des ASP.NET-Ausgabecache Mechanismus Sie dies tun können, und funktioniert gut.Ich jedoch zwei Probleme über der ASP.NET-Ausgabecache haben.

Zunächst müssen Sie Ihren ASP.NET-Code ändern und, platzieren die mindestens Tags auf diese Seiten an dem Ihre Ausgabe zwischengespeichert werden soll.Ist nicht immer möglich, dass ein IT Person verwaltet sowohl intern entwickelte als auch extern erworben ASP.NET-Anwendungen.Auch wenn Sie den Anwendungscode ändern, müssen Sie wechseln durch Qualitätssicherung Anstrengungen, um sicherzustellen, dass nichts im Prozess wurde verletzt.Dies erhöht die Kosten der Zwischenspeicherung einbinden.

Zweitens werden ASP.NET-Ausgabecache Seitenausgabe lokalen, jeden Server und in der Tat innerhalb jedes ASP.NET-Workerprozess zwischengespeichert.Dadurch größere Probleme hinsichtlich der Konsistenz und Skalierbarkeit, wenn Sie einen Webgarten (d. h. mehrere Arbeitsprozesse auf einem Webserver) oder einer Webfarm mit Lastenausgleich verfügen.In diesen Fällen Sie mehrere getrennte Kopien der Cache; für hohem Datenverkehr Websites konnte dies ein Albtraum Management werden.In ASP.NET 4.0 ist Microsoft ein erweiterbares Framework Zwischenspeicherns Zusagen, das den Cache in einem separaten Prozess oder Ebene halten, indem einen Fremdanbieter-verteilten Cache einbinden ermöglichen würde.

Angesichts der dieser Entwicklung ich möchten Cache Seitenausgabe nicht auf dem Server, sondern in einem separaten Webcache Server, die zwischen Benutzern und Ihrer Webfarm (Art der wie eines reverse-Proxy, siehe Abbildung 2 ).Wenn viele Benutzeranforderungen an der Webfarm nicht vornehmen und werden aus einem Cache zwischen bedient stattdessen sind die Last auf Ihre Webfarm verringert und der Webfarm Skalierbarkeit zu erhöhen.Ausgabe einer Webseite aus dem Cache abgerufen und an den Benutzer zurückgegeben erfordert erheblich weniger Ressourcen als tatsächlich die Webseite ausführen.Das liegt daran der Cache ist ein hoher Leistung und Skalierbarkeit im Arbeitsspeicher Speicher, im Gegensatz zu allen Speicherplatz, die Probleme mit Leistung und Skalierbarkeit aufweisen können.

Abbildung 2 Webcache Server sitzen zwischen Benutzern und Web Server.

In diesem Kontext werden erläutert, wie Zwischenspeichern der Ausgabe von Webseiten kann beheben Engpässe und Skalierbarkeit und Leistung erheblich steigern.Ein Webcache Server kann eine wichtige Rolle in erreichen dieser Ziele spielen.

Ein Webcache Server fängt ab HTTP-Anforderungen, Benutzer für Webseiten und überprüft, ob diese Seiten Ausgabe im Cache bereits vorhanden ist.Wenn dies der Fall ist, gibt der Webcache Server, die Ausgabe an den Benutzer zurück.Die Benutzeranforderung macht es nie auch zu den Webservern.Da es aus dem Cache abgerufen werden ist, ist der Zinsfuß extrem schnell.Und da es im Speicher ist und die Seite muss keinen re-executed werden, sehr viel CPU-Verarbeitung gespeichert sowie.

Ein Webcache Server kann mit jeder Back-End-Web-Technologie-Plattform arbeiten.Solange Sie alle talking HTML- und JavaScript sind, ist es unwichtig, ob die Webanwendung in Java, .NET, PHP oder einer anderen Sprache entwickelt wurde.Ein Webcache Server kann jedoch einige plattformspezifischen Features, enthalten, damit Features von Lösung zu Lösung unterschiedlich.

Es gibt zwei Arten von Webcaching Lösungen.Hauptsächlich speichert eine relativ statische Daten, d. h., dass jede Seite zwischengespeichert wird davon ausgegangen werden vollständig statisch oder vorhersagbaren Intervallen zu ändern.Die gesamte Seite wird für einen bestimmten Zeitraum, zwischengespeichert, nach der abläuft und aus dem Cache entfernt.Der andere Typ ist für die dynamische Zwischenspeicherung für dynamische Websites oder Webanwendungen besser geeignet.

Wenn Ihre Website oder Anwendung, in denen Daten häufig und unvorhersehbar ändert dynamisch, ist, sollten Sie für die dynamische Zwischenspeicherung auswählen.Diese Tage, die meisten Websites ändern mindestens einiger häufig Ihre Inhalte.Sie sollten möglicherweise etwas nur 15 bis 30 Sekunden jedoch normalerweise für eine beliebige Stelle von ein paar Minuten zu ein paar Stunden Zwischenspeichern – und in einigen Fällen für Tage oder sogar Wochen.

Web-Zwischenspeicherung bietet einen wichtigen Vorteil für großen Unternehmen weltweiten: die Möglichkeit, Webcaching Server geografisch verteilen.In einer globalen Organisation Ihrer Anwendung Hauptwebsite in New York gehostet werden, aber Sie Benutzer auf der ganzen Welt haben – in San Francisco, London und Tokio und Sydney und Dubai.Jetzt ist es relativ einfach Webcache Server geografisch befindet sich in jedem dieser Bereiche verfügen.Alle Anforderungen von Europa gehen über den europäischen Webcache-Server, bevor Sie Ihre Website erreicht.Auf diese Weise müssen sich keine Kreuz Atlantic Meer und entstehen, dass 100 Millisekunden Wartezeit, die jedes Paket durchlaufen.Sie können eine Kopie davon im Grunde aus einem nahe gelegenen Cache abrufen.

Werfen Sie ein weiteres Beispiel.Sie haben einen Server in Dubai, fungiert die Regionen Naher Osten und von Asien und haben Sie Hunderte oder Tausende von Benutzern gleichzeitig auf Ihrer Website.Mit Web Zwischenspeichern, werden Datenverkehr an main Datenzentrum in New York erheblich gelöscht.Nicht alle der Datenverkehr wird beendet, da Sie nicht alles Zwischenspeichern und was Sie Zwischenspeichern wird auch aus dem Cache (die ungültig ist,) entfernt wird, Zeiten.Aber je nach Art der Anwendung haben Sie wahrscheinlich den Datenverkehr von 30 bis 50 Prozent reduziert.

Muss haben Features in Webcache

Im Laufe der Zeit haben Websites transformiert, nur statischen Inhalte um vollständig interaktive Webanwendungen mit dynamischen Daten, die häufig geändert wird angezeigt.Das bedeutet, die heute einen Webcache alle Anforderungen der eine dynamische Website berücksichtigen muss.Das Ziel ist zum Cache so viel von der Website Inhalt wie möglich, während gleichzeitig sicherstellen, dass die zwischengespeicherte Inhalte korrekt und nicht veraltet oder nicht-mehr-synchronisiert mit den zugrunde liegenden Daten in der Datenbank ist.Um alle zu behandeln, der Webcache bestimmte Features, die Datenintegrität Probleme vermeiden, bei der Steigerung von Leistung und Skalierbarkeit benötigt.

Eine typische Webcache Lösung umfasst die folgenden Features.

Ablaufzeiten

Ablaufdatum ermöglicht Regeln über die Webseiten zum Cache und für wie lange an.Und ermöglicht Seiten entweder absolute oder gleitende Zeit ablaufen.Absolute Zeit bedeutet Sie etwas zu einem bestimmten Zeitpunkt ablaufen, ob es heute oder 10 Minuten ab jetzt Mitternacht.Variable Zeit hängt davon ab, ob eine bestimmte Seite ständig zugegriffen wird.Wenn eine Seite ist nicht zugegriffen werden, wird es nicht bei allen verwendet wird – möglicherweise möchten Sie es abläuft.Eine Leerlaufzeit würde eine Seite abläuft, wenn es für mehr als eine bestimmte Zeitspanne verwendet abrufen nicht – z. B. 10 oder 20 Minuten.

Immer Absolute Ablaufzeit ist wahrscheinlich wichtigste Zeitpunkt der Ablaufzeit für Webseiten.Web-Zwischenspeicherung Produkte können Sie Regeln angeben, und wählen Sie die URL-Muster (auch als "URI" bekannt) zum Cache.Web-Zwischenspeicherung können Sie angeben, dass bestimmte URLs nie zwischengespeichert werden soll.Sie können bestimmte Arten von URLs zum Cache für eine bestimmte Länge angeben.

Es sollte auch können Sie angeben, wann Sie Ablaufen von verschiedenen URLs basierend auf Informationen in die HTTP-Header, der mit der URL-Ausgabe geliefert wird.Jede Seite http-Header kann enthalten Informationen für wie lange es zwischengespeichert werden kann, wann Sie ablaufen und wenn wurde zuletzt geändert.Diese sind die Elemente Web Cache überprüfen, um überwachen, ob eine Seite Inhalt geändert wurde und ob neuen Inhalte in den Cache laden muss.Ohne diese Funktion ist verfügen Sie keine Möglichkeit zum ungültig und Entfernen von veraltete Daten.

Laden von Seiten auf Ablaufdaten für

Ein weiteres wichtiges Feature wird damit automatisch eine Seite Ablauf aus irgendeinem Grund, ob Sie aufgrund von absoluten oder im Leerlauf Zeit Ablaufdatum neu.Beispielsweise könnten Sie sagen: "diese Seite ist gut für den nächsten 20 Minuten." Nach 20 Minuten re-fetches der Webcache automatisch die Seite, so dass Sie immer die neueste Kopie enthält.

Auf diese Weise nicht Sie die nächste Anforderung des Benutzers für die Seite warten.Das liegt daran, dass wenn die Anforderung stammt, der Benutzer die Verzögerung für die Seite erneut abrufen, von der Webfarm durchlaufen soll nicht.Da Sie es im Hintergrund abrufen können, kann er Sie 5 bis 10 Sekunden, es vom Server abzurufen, indem Sie es zuerst ausführen dauern.Doch, ist in Ordnung, da durch die Zeit, die der Benutzer erhält, Sie es mit einer Antwortzeit von Sub-second zurückgegeben können werden je wie weit des Benutzers ist.

Partial-Page Caching

Einige Seiten, die in einem Browser angezeigt enthalten mehrere Elemente, die beide Ihre eigenen URLs verwenden.Für eine Seite gerendert werden soll, muss der Webbrowser so mehrere URLs aufrufen.Dies dasselbe Ergebnis wie eine teilweise Seite erreicht, aber es ist nicht "teilweise Seite" aufgerufen, da auf der Serverseite jeder URL eine separate Seite darstellt, und jede Seite, unabhängig voneinander und für eine unterschiedliche Dauer, abhängig vom Inhalt zwischengespeichert wird.

Eine einzelne Website Seite entwickelt wird, in wie können Sie in anderen Situationen eine Möglichkeit, die der Inhalt einrichten in Abschnitte unterteilt.Einige Abschnitte sind statisch und nicht ändern; einige Teile mit jedem Abschnitt ändern, nachdem ein anderes Intervall, dynamische sind.Tatsächlich Grundlage Partial-Page caching Caches Seite Abschnitte, ob Sie statische oder dynamische sind und für wie lange Sie, zwischengespeichert werden soll statt nur Zwischenspeicherung der gesamten Seite.

ASP.NET können Sie Teilaktualisierungen von Seiten zwischenspeichern über zwei Möglichkeiten: Steuern der Zwischenspeicherung und Postcacheersetzung.Beide müssen Sie bestimmten ASP.NET-Seiten ändern, wo Sie diese Zwischenspeicherung möchten.Die möglicherweise nicht möglich, wenn Sie nicht Ihre eigenen Entwicklungsressourcen haben und Sie haben diese interne ASP.NET-Anwendung entwickeln.Dennoch folgt eine Beschreibung der einzelnen Typen von Partial-Page caching in ASP.NET.

Können Sie Teilaktualisierungen von Seiten caching in ASP.NET durch Benutzersteuerelemente, die die zwischengespeicherte Inhalte enthalten erstellen und anschließend markiert die Benutzersteuerelemente "zwischenspeicherbar". Dadurch können Sie einige Teile der Seite als Benutzersteuerelemente zwischengespeichert, sodass bei die Seite re-executed ist, diese Teile einfach aus dem Cache abgerufen und nicht re-executed sind.Nur die Teile der Seite, die sind nicht als Benutzersteuerelemente bezeichnet und sind nicht markiert "zwischenspeicherbar sind re-executed."

Mit der Postcacheersetzung die Seite wird zwischengespeichert, aber einige Teile oder Fragmente darin werden markiert, "dynamischen" oder "nicht zwischengespeichert werden." Wenn diese Seite erneut ausgeführt ist, werden dann nur die Teile dynamische oder nicht zwischengespeichert werden ausgeführt.Der Rest der Seite wird ermittelt, aus dem Cache und zwischengespeicherte und dynamische Teile werden kombiniert, um die Ausgabe der Seite zurückzukehren.

Interessanterweise kann teilweise Seitenzwischenspeicherung nur auf dem Server ausgeführt werden.Aus diesem Grund ist Programmieraufwand erforderlich.Im Fall von ASP.NET teilweise Seitenzwischenspeicherung erfolgt durch Programmierung in ASP.NET-Seiten, was – und welche nicht – auf Cache.Aber diese Zwischenspeicherung erfolgt auf dem Webserver selbst und noch mindestens führt die ASP.NET-Seite Teile davon.

In ASP.NET teilweise Seitenzwischenspeicherung basierend auf der Microsoft-Spezifikation, sondern auf der Java-Plattform implementiert ist, eine Partial-Page caching standard aufgerufene Seite Service enthält (ESI) entwickelt wurde.ESI definiert eine einfache XML-basierte Markupsprache, die zwischengespeichert werden und nicht zwischengespeichert werden kann-Seite Komponenten, die aggregiert, zusammengestellt und können am Netzwerkrand übermittelt, definiert ob es sich in ein Inhalt-Delivery-Netzwerk, Browser des Endbenutzers oder Webcache Server als reverse Proxy zwischen Benutzern Browser und dem Webserver befindet.

Teilweise Seitenzwischenspeicherung ist also sehr plattformspezifisch – und, natürlich für ASP.NET Sie müssen Microsoft Ansatz.

Datenbank-Abhängigkeit

Ein anderes wichtiges Feature ist Datenbank Abhängigkeit eine Seite aus dem Cache ungültig gemacht, wenn entsprechende Ausgabe ermöglicht Daten in der Datenbank geändert.Die Seiten-Ausgabe ist häufig basierend auf Daten in der Datenbank generiert.Die Sie mit Daten stammen aus einem oder mehreren Zeilen in einem oder mehreren Datenbanktabellen.Daher Wenn diese Zeilen ändern, müssen dann diese Seiten aus dem Cache entfernt werden.Aus diesem Grund ist die Datenbanksynchronisierung ein wichtiges Feature.Dies bedeutet, dass bei in der Datenbank Datenänderungen diese Seiten Ausgabe ungültig sollte und aus dem Cache entfernt werden sollte.Diese Funktion können Sie automatisch bestimmen, wann bestimmte Seiten aus dem Cache entfernt werden soll.

Eine Möglichkeit, diese Abhängigkeit zu erstellen, ist durch Angeben einer "select" SQL-Anweisung (oder Aufruf einer gespeicherten Prozedur mit select-Anweisung), entspricht der Seite fragliche, dann einige der Seite GET-POST-Parameter mit Parametern in der SQL-Anweisung zuordnen.Zur Laufzeit die Seite Parameter werden verwendet, um die SQL-Anweisung ausführen und ein SqlCacheDependency für eine SQL Server 2005/2008 oder Oracle 10 g R2 oder höher Datenbank erstellt.Wenn die entsprechende Zeile in der Datenbank ändert, löst der Datenbankserver dann ein .NET-Ereignis, die durch den Webcache Server erfasst ist.Dann die entsprechende Webseite Ausgabe aus dem Cache entfernt (siehe Abbildung 3 ).

fig03.gif

Abbildung 3 Seite aus Webcache entfernt, wenn Datenbank Zeile Änderungen.

Datei-Abhängigkeit

Ein weiteres wichtiges Feature ist Dateiabhängigkeit.Sie können eine Datei im System mit den Anweisungen eine Seitenausgabe zuordnen: "Wenn diese Datei ständig aktualisiert oder entfernt wird, geben Sie ungültig dieser Seite." Der Webcache überwacht dann die Datei, die in einem freigegebenen Ordner gehalten wird.Wenn die Datei nie aktualisiert oder entfernt ist, macht der Webcache automatisch die entsprechende URL aus dem Cache ungültig.Dadurch können Sie aktualisieren, die von überall in Ihrem System Datei, ob es, beinhaltet einer anderen Anwendung oder sogar einen Trigger auf dem Datenbankserver basierend auf, wenn einige Datenänderungen beziehen.Beispielsweise, können Sie wenn Ihre Daten auf einem Mainframecomputer statt in SQL 2005/2008 oder Oracle-Datenbanken gespeichert ist, eine Dateiabhängigkeit verwenden, um eine Seite Cache ungültig zu machen.

Alle Dadurch können Sie den Cache zu benachrichtigen wenn wenn bestimmte Dinge in Ihren Datenspeicher oder in Ihrer Umgebung, die direkt zugegriffen werden durch den Webcache werden nicht ungültig.

PDF teilweise Inhalt

Viele Personen zugreifen jetzt online PDF-Dateien.Das allgemeine Verwendungsmuster ist, dass Sie eine Seite zu einem Zeitpunkt lesen über die gesamte PDF-Datei von einer Seite.Einige Personen downloaden eine gesamte PDF und dann lokal lesen; die meisten in ihren Browsern gelesen.Wenn Sie die Informationen auf diese Weise anzeigen, Sie i. d. r. nicht das gesamte Dokument lesen; verwerfen Sie es nach dem Abrufen über einen Teil.

So bedienen die gesamte PDF-Datei konnte ist häufig eine Verschwendung von Ressourcen; tatsächlich den unterscheidenden Faktor zwischen akzeptablen und inakzeptablen Leistung während der Spitzenzeiten.Aus diesem Grund ist PDF teilweise Inhalt Behandlung ein wichtiges Feature in einem Webcache.Es reduziert die Auslastung Bandbreite auf dem Server und verbessert die allgemeine Skalierbarkeit.

ViewState Zwischenspeichern

Zwischen der wichtigsten Features in ASP.NET ist die Fähigkeit Steuerelemente deklariert wird, die auf dem Server ausgeführt und auf dieselbe Seite post-back.Vor zu ASP.NET im klassischen ASP, die Sie oben erstellen mehrere Seiten, verschiedene Operationen behandeln, die zu einer Seite logisch gehörten beendet – z. B. Daten zu laden, Speichern von Daten oder andere Aktionen.Aber in ASP.NET nicht mehr dazu.Formularfelder und andere Steuerelemente können jetzt auf dem Server ausführen deklariert werden und der Server sendet einfach die Seite an sich selbst.

Um diese Post-backs zu behandeln, eine ViewState wird erstellt, speichert die Identität der die Steuerelemente und dynamische Informationen, die diese Steuerelemente zugewiesen.ViewState wird im Wesentlichen den Status einer Seite Steuerelemente über mehrere Beiträge beibehalten.

ViewState ist wichtig für ASP.NET-Anwendungen.Im Wesentlichen ist es Informationen vom Webserver an den Browser gesendet wird, so dass der Browser der gleichen Informationen zurück an den Server den nächsten Zeit Benutzer senden kann einen Beitrag für dieselbe Seite.

Sie können z. B. ein Kunde auf der Seite customer.aspx laden.Anschließend nehmen Sie einige Änderungen in der Kundendaten, und klicken Sie auf "Speichern". Die Schaltfläche erneut ruft customer.aspx, doch auch im ViewState sendet, damit die customer.aspx weiß, wie diese Sendevorgangs zu behandeln.Der ViewState enthält die Informationen customer.aspx an den Browser gesendet hatte, und die Sendevorgangs enthält die neuen Daten, die der Benutzer möglicherweise geändert hat.Die ermöglicht customer.aspx bestimmt, was geändert wurde und was Sie zu tun.Dies ist nur ein einfaches Beispiel; ViewState kann auch andere dynamisch erstellten Daten für jedes Steuerelement auf der Seite enthalten.

Obwohl ViewState in ASP.NET sehr nützlich ist, führt er auch Kosten übertragen Daten hin-und von einem Webserver in der Browser des Benutzers.Diese Kosten konnte haben, eine Leistung und Skalierbarkeit Auswirkungen wird, während der Spitzenzeiten lädt die Anwendung und wenn die Benutzer weit vom Server und über eine langsame Internetverbindung.

Aber im ViewState häufig nicht ganz nach den Browser belaufen sich es im Web-Cache zwischengespeichert werden kann.In diesem Fall konnte nur ein Tag oder eine eindeutige ID an den Browser gesendet werden, wenn der Browser zurück geliefert wird, der Webcache Wiederanschließen würde, eine ViewState und bieten zurück an den Webserver auf Grundlage der eindeutigen.Alle ein Web Server ist erforderlich ist, dass das nächste Mal, das im Browser die Anforderung sendet, es ViewState von der vorherigen Zeit enthält.Es ist unerheblich, ob der ViewState Browser, erreicht da der Browser die Informationen nie verwendet – nur der Webserver hat.

Technischer ausgedrückt wird eine ViewState für Sendevorgangs, verwendet, wenn Sie jemals Post-backs, Sie müssen eine ViewState und ein Webcache kann eine ViewState Zwischenspeichern.Speichert auch beträchtliche Bandbreite, da eine ViewState nur wenige KB Größe werden konnte.

GZIP-Komprimierung

Heutzutage können die meisten Browser Gzip komprimierte Inhalte dekomprimieren.Aber nicht alle Webserver Ausgabe von Webseiten automatisch komprimieren konfiguriert sind.Und selbst wenn Komprimierung aktiviert ist, verbraucht es eine Menge unnötige CPU auf jedem Webserver, die bereits mit hohem Datenverkehr Produktionsbelastung ist.Wenn die Komprimierung von einem zwischengeschalteten Proxy Webcache Server ausgeführt wird, wird es jedoch besser skalierbar.

Es ist am einfachsten, statische Daten komprimieren, die nie ändert.Allerdings sind die meisten Seiten in einer ASP.NET-Anwendung dynamisch und deren Inhalt sollten nur komprimiert werden, wenn die Seitenausgabe jedes Mal ändern ist nicht.Andernfalls würde Komprimierung eine unangemessene Last auf CPU, vielleicht dwarfing die Gewinne bei der Bandbreitenverwendung des abgelegt.Aber da ein Webcache bereits intelligent über herauszufinden ist die Ausgabe dynamischer Seiten ist zwischengespeichert werden kann (d. h., die er für mindestens einen kurzen Zeitraum ändert), es ist auch automatisch alle Cacheseiten komprimieren können.Dann diese zwischengespeicherten Seiten sind-bedient an die Clients mehrmals in komprimierter Form und Bandbreitenverwendung erheblich reduziert.

Eine typische Gzip-Komprimierung verringert den Inhalt nahezu 80 Prozent, wenn der Inhalt bereits komprimiert ist (z. B. PDF, JPEG, TIFF, usw.).Ein guter Webcache sollte der Benutzer an, welche URLs zum Komprimieren und für die Komprimierung zu ignorieren, ermöglichen.

Skalierbare und Dynamic Web-Cache-Cluster

Ein Webcache ist ein Server, der vor der ein ASP.NET Web Farm (fast wie eine Serveranwendung) befindet.Heute, können ASP.NET Webfarmen aus zwei Servern zu 100-plus Servern mit einem System zum Lastenausgleich anwachsen.Daher kann ein einzelner Webcache Server die Last einer wachsenden Webfarm verarbeiten.Eine Faustregel ist, dass für alle fünf Webserver in der Farm Sie eine Cache-Webserver sollten.

Verwendung mehrerer Webcache Server nicht nur verbessert die Skalierbarkeit, ermöglicht aber auch den Webcache, so dass alle ein Server ausfällt oder heruntergefahren wird, ist der Cache nicht verloren und es kein Leistungsabfall (Siehe gibt zu replizierenAbbildung 4).

fig04.gif

Abbildung 4 Dynamic Web-Cache-Cluster (hinzufügen oder Entfernen von Servern zur Laufzeit).

Ein guter Webcache Server sollte einen Cluster von Webcaching Servern, behandeln Zuverlässigkeit durch Replikation und Skalierbarkeit über mehrere Server erstellen können.Jedoch viele Zwischenspeichern-Webserver beteiligt sind, ist es immer noch eine logische Webcache betrachtet.Selbst wenn mehrere Kopien von dem Cache im Cluster vorhanden sind, sind Sie immer synchronisiert.Kurz gesagt, ermöglicht einen Cluster von Webcaching Servern mit skalieren, während die logische Richtigkeit des Caches.

Sobald Sie einen Cache-Cluster haben, sollte ein guter Webcache unterschiedliche Cache speichern Optionen auch bekannt als Zwischenspeicherung Topologien angeben können.Die wichtigsten Topologien umfassen Cache repliziert, partitionierter Cache und Client-Cache.

Repliziert Cache bedeutet, dass, die der gesamte Cache in jedem Cache Server im Cluster kopiert wird.Als Ergebnis hat jeder Cacheserver den gesamten Cache.Alle Operationen, "get" sind immer lokal auf das Feld und werden deshalb, sehr schnell.Jedoch Aktualisierungen an mehreren Cache-Servern vorgenommen werden, und wenn mehr als zwei solche Server im Cluster vorhanden sind, dann die Kosten für Aktualisierung wächst.

Andererseits, partitionierter Cache unterbricht einrichten (oder Partitionen) den Cache, speichern jede Partition auf einem anderen Server.Die Anzahl der Partitionen entspricht der Anzahl der Cache-Server.Dadurch können Sie Cache Speicherkapazität erhöhen, indem in Cache repliziert nicht möglich Server Weitere Cache hinzufügen.Partition Cache können Sie auch Sicherungskopien der jede Partition auf einem anderen Server erstellen, sodass Wenn jeder dieser Server ausfällt, können Sie den Cache nicht verlieren.Partition ist die am besten skalierbare Zwischenspeichern Topologie für die Speicherung und Transaktionen pro Sekunde.

Schließlich ist die Client-Cache eine Topologie, die entweder mit partitionierte oder Cache repliziert (insbesondere wenn der tatsächliche Cache auf einen anderen Server als Webcache Server gehostet wird) kombiniert wird.Client-Cache behält eine kleine Teilmenge der Cache innerhalb des Clientprozesses, sodass häufig verwendeten Daten immer verfügbar Schließen von ist.Was in den Client-Cache gespeichert ist, hängt von was dem Client zuletzt abgerufen.Sie können eine maximale Größe angeben für der Client Cache zum es die gewünschte Größe erreicht, starten zu entfernen (oder entfernen) älterer Elemente um Platz zu schaffen für neue.Auf diese Weise den Client-Cache nie mehr Arbeitsspeicher verbraucht als durchführbar ist was Sie ermittelt haben.

Wenn Sie mehrere Webcache Server, verwenden ohne einen Cache-Cluster erstellen, müssen Sie mit mehreren getrennte Kopien des Caches landen.Das Ergebnis möglicherweise akzeptabel sein, wenn Ihre Website relativ statisch ist, aber für dynamische Websites und ASP.NET-Anwendungen, der die Datenintegrität Probleme verursachen.Darüber hinaus müssen Sie am Ende die Benutzeranforderung an Server senden, obwohl eine andere Webcache-Server die Ausgabe dieser Seite im Cache hat und somit erhöhen die Auslastung der Webfarm von ASP.NET.

Geografische Verteilung der Cache

Viele ASP.NET-Anwendung verfügen Websites heute Benutzer weltweit, obwohl der Website selbst in einem einzigen Standort gehostet wird.Es ist oft unmöglich, für die Website an mehreren geografischen Orten befinden, wegen der Komplexität und die Kosten für deren Infrastruktur.Z. B. ein ASP.NET Web Farm muss auch einen Datenbankserver an derselben Stelle haben; Datenbankservern sind normalerweise ideal für geografische Verteilung nicht, wenn Sie sehr Transaktionsanwendungen beinhalten.Als Ergebnis langsam Endbenutzer wegen wide Area Network (WAN) Latenz.

Eine Möglichkeit, dieses Problem zu beheben, besteht darin Webcache Server in jeder geografischen Standort platzieren dann den gesamten Datenverkehr aus diesem Bereich über den nächsten Webcache Server weiterleiten (siehe Abbildung 5 ).Wenn ein Webcache Server eine Seite bereits zwischengespeichert hat, sendet Sie dann direkt die Anforderung an das Hauptfenster Data Center, wo sich einen anderen Satz von Webcache Server befindet.

fig05.gif

Abbildung 5 Webcache Server in geografisch verteilten Umgebung.

Damit ein guter Webcache sollte die Möglichkeit, eine Hierarchie von Servern zu erstellen, sodass jede Webcache weiß, wo Sie die Anforderung weiterleiten, selbst wenn Sie die Seite zwischengespeichert wird nicht.

Einlagerung aus der Datenbank bleiben

Wie in meinem Artikel vom Juni 2009 beschrieben, keine Daten jedes Mal ändern; konstant bleibt.Leider sind ohne verteilte Zwischenspeicherung durch unnötige Zyklen, immer wieder dieselben Daten zu reproduzieren wechseln.Sie müssen aber nicht immer der Datenbank wechseln.Ist es die gleichen Daten, also warum es wechseln?Warum nicht nehmen Sie Sie aus dem Cache?

Hier ist ein Beispiel um dieses Problem zu markieren.Eine Fluggesellschaft main Webseite ist nicht viel ändern, können für einen langen Zeitraum zwischengespeichert werden.Ein Kunde Besuche Flüge suchen.Die Informationen ist ständig verschieben, da als anderer Benutzer Arbeitsplätze buchen, die Informationen auf dem Back-End ändert.

Arbeitsplatz Verfügbarkeit bestimmt die Ergebnisse, wenn der Kunde, z. B. einen Flug aus New York, San Francisco gesucht wird.Arbeitsplatz Verfügbarkeit basiert die Anzahl der Personen, die bereits mit ständig geschieht Buchungen gebucht.Gequälten Businessperson möglicherweise Themen erschweren, indem Sie falschen Informationen eingeben oder mehrere Einträge, um eine Zuordnung von Arbeitsplatz zu gewährleisten.

Der Benutzer erhält Ergebnisse, dass mit diesen Informationen alle fünf Minuten in den Cache ändern ein bestimmter Flug verfügbar ist.Aber wenn der Debitor tatsächlich ein Arbeitsplatz reservieren möchte, dann in Echtzeit geprüft wird durchgeführt in der Datenbank.Das liegt daran, dass für alle 1.000 Benutzer Flight Verfügbarkeit, wahrscheinlich überprüfen nur ungefähr 10 tatsächlich eine Reservierung vornehmen.Es ist in Ordnung Flight Verfügbarkeit für die Besucher angezeigt, obwohl die bereitgestellten Informationen nicht vollständig richtig sein.In solchen Situationen können Sie die Seite zwischenspeichern, selbst wenn es sehr dynamisch ist.

Aber Sie können mit der Idee, es akzeptabel ist, dass es nicht realistisch ist mit einigen Informationen zwischenspeichern.Auf der Seite Reservierungen in der Datenbank ist es jedoch wichtig, um sicherzustellen, dass alle Informationen genau und aktuell ist.Der Punkt hierbei ist, dass jede Anwendung verfügt allgemeinen Informationen, der zwischengespeichert werden können und ein Website-Benutzer nicht an die Fluggesellschaft Datenbank jedes Mal gesendet werden.

Die einfachste Phase ist, wenn Sie alle Bilder zwischenspeichern möchten.Sie ändern nicht, Ihrem Firmenlogo oder Ihre President Bild oder Standarddokumente, die Sie für Personen zum Lesen zur Verfügung haben.Aber es gibt dann andere Bereiche, die dynamischere sind.Das ist, in denen Regeln angeben, und sagen, z. B. "Ich möchte diese Seite für diese lang zwischengespeichert."

Mit anderen Seiten, Sie könnte sagen, "Ich kann nicht feststellen, wie lange es geht zwischengespeichert werden, so dass ich es in der Datenbank verknüpfen.Wenn diese Zeile in dieser Tabelle ändert, soll diese Seite für ungültig erklärt werden." Das bedeutet, aus dem Cache entfernen und neu zu laden, wodurch eine neue Kopie.Jede Kategorie Seite unterscheidet.Solange ein Webcache können Sie bestimmen wie Cache-Seiten sollen, sind Sie eine Situation in der erstellen, desto Zwischenspeichern Sie, fahren Sie Sie der weniger mit der Webfarm.

Richtlinien

In den meisten Fällen erzielen Sie erhebliche Vorteile durch die Bereitstellung von Webcache.Wenn Sie nur über einen Webserver haben, sind wahrscheinlich Sie nicht über genügend Datenverkehr auf diese Art von Problemen auftreten verfügen.Aber wenn Sie mindestens 1.000 Benutzer verfügen, Sie wahrscheinlich bereits eine Webfarm mit Lastenausgleich.In diesem Fall können Sie ein Kandidat für erforschen Möglichkeiten, Leistung und Skalierbarkeit zu optimieren.

Vorausplanen.Warten Sie nicht Probleme auftreten, wenn dies der Fall, Sie im panic-Modus werden.Die beste Zeit ist, wenn Sie größeren Probleme gegenüberliegenden sind nicht – aber zu diesem Zeitpunkt muss dazu verleiten, Topmanagement dazu, warum Sie benötigen ein solches Projekt Finanzierung.Eine gute Möglichkeit, dieses Ziel zu erreichen: Verwaltung Fragen, was es Ihr Unternehmen Kosten möglicherweise, wenn Ihre Website schmerzhaft Langsame Antwortzeiten, während der Spitzenstunden (upward von 30 bis 60 Sekunden pro Klick) bereitgestellt.Und was passiert, wenn sich Ihre Website für 30 bis 60 Minuten ausgefallen?Über diese Fragen nachgedacht haben können Führungskräfte Ihrer Organisation über die Notwendigkeit einer Webcache verleiten.

Wie zuvor erwähnt sind Web-Zwischenspeicherung Optionen verfügbar, kostenlose und kommerziell.Mit ASP.NET wachsenden Beliebtheit zwischen Entwicklern sind kommerzielle Webcaching Optionen, die .NET unterstützen jetzt aufkommenden.Allerdings unterstützen die meisten Webcaching Produkte in diese schreiben, Java und PHP.Die meisten sind Software-basierte, aber einige Hardware Appliance Optionen sind auch verfügbar.

Wie Sie Ihre Auswahl berücksichtigen, bleiben Sie auf Ihre Organisation und die Website.Wie dynamische ist die Website?Wie viele Benutzer haben Sie?Wie viel Zwischenspeichern soll Ihnen wirklich helfen?

Sollten Sie welche Zwischenspeicherungsfunktionen müssen.Wie wir erwähnt haben, macht das Zwischenspeichern Transaktionen blazingly schnell und skalierbar.Aber es kann manchmal Benutzer veraltete Informationen erhält.Bedenken Sie, dass Saldo wie Sie verschiedene Lösungen in Betracht ziehen.

Iqbal Khanist der Leiter und Technologieexperte vonAlachisoft. Alachisoft stellt NWebCache, die führende ASP.NET-Webseiten Cache für die Steigerung von Leistung und Skalierbarkeit.Iqbal empfangen ein M.S.Grad in Informatik von der Bloomington, Indiana University 1990.Sie erreichen ihn unteriqbal@Alachisoft.com.