ASP.NET wird heute häufig für Webanwendungen mit hohem Datenverkehr verwendet, die Millionen von Benutzern verarbeiten müssen und in Webfarmen mit Lastenausgleich bereitgestellt werden. Ein wichtiger Teil von ASP.NET ist View State, den viele Anwendungen verwenden. ASP.NET View State ist ein sehr leistungsfähiger Mechanismus, der Seiten, Steuerelemente und benutzerdefinierte Werte zwischen mehreren HTTP-Anfragen über den Client und den Webserver speichert.
ASP.NET View State Werte werden in einem versteckten Feld auf der Seite gespeichert und als Base64-String codiert. Ein ASP.NET View State sieht aus wie das:
1 2 3 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kF…" /> |
Obwohl sehr nützlich, ASP.NET View State wird häufig recht groß, insbesondere in Situationen, in denen Ihre ASP.NET-Anwendung über Rastersteuerelemente und viele andere Steuerelemente auf Seiten verfügt. Dies wird zu Ihrer HTTP-Anfrage und -Antwort hinzugefügt und verlangsamt Ihre ASP.NET-Antwortzeit wirklich auf ein unerträgliches Maß.
Ein weiterer Nachteil von Heavy ASP.NET View State ist die erhöhte Bandbreitennutzung, die Ihre Bandbreitenkosten erheblich erhöht. Wenn Sie beispielsweise für jede HTTP-Anfrage am Ende 60–100 zusätzliche Daten anhängen ASP.NET View State Daten, multiplizieren Sie sie einfach mit der Gesamtzahl der Transaktionen und Sie werden schnell sehen, wie viel mehr Sie durch den Bandbreitenverbrauch kosten.
Schließlich besteht in manchen Situationen ein Sicherheitsrisiko bei der Übermittlung vertraulicher Daten ASP.NET View State. Auch die Verschlüsselung vor dem Versand ist kostspielig.
Um all diese Probleme zu lösen, können Sie zwischenspeichern ASP.NET View State auf dem Webserver und weisen Sie im Cache eine GUID als Schlüssel zu. Diese GUID wird dann in einem versteckten Feld an den Browser gesendet und kommt zusammen mit der nächsten HTTP-Anfrage zurück und wird zum Abrufen der entsprechenden verwendet ASP.NET View State aus dem Cache. Dadurch wird die an den Browser gesendete Nutzlast reduziert, was nicht nur die Antwortzeit von ASP.NET verbessert, sondern auch die Kosten für den Bandbreitenverbrauch drastisch senkt.
Wenn Ihre ASP.NET-Anwendung in einer Webfarm mit Lastausgleich ausgeführt wird, müssen Sie einen verteilten Cache verwenden. Ein eigenständiger Cache wie ASP.NET Cache funktioniert nicht. NCache ist ein verteilter Cache auf Unternehmensebene, der Folgendes bereitstellt: ASP.NET View State Caching-Modul. Um es zu nutzen, müssen Sie keine Programmierung vornehmen. Ändern Sie einfach Ihre ASP.NET web.config dafür.
Hier sind die Schritte zu verwenden NCache zum Caching ASP.NET View State:
- Erstellen Sie eine app.browser-Datei in Ihrer ASP.NET-Anwendung. Erstellen Sie es im Verzeichnis App_browsers. Fügen Sie Seitenadapter wie folgt in die Datei app.browser ein:
123456<browser refID="Default"><controlAdapters><adapter controlType="System.Web.UI.Page"adapterType="Alachisoft.NCache.Adapters.PageAdapter"/></controlAdapters></browser> - Fügen Sie dann die folgende Assembly-Referenz im Kompilierungsabschnitt der Datei web.config hinzu.
1234567<compilation defaultLanguage="C#" debug="true"><assemblies><add assembly="Alachisoft.NCache.Adapters,Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/></assemblies></compilation> - Registrieren Sie Ihren Konfigurationsabschnitt in der Datei web.config.
12345678910<configSections><sectionGroup name="ncContentOptimization"><section name="settings"type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings"allowLocation="true" allowDefinition="Everywhere"/></sectionGroup></configSections> - Geben Sie Einstellungen für Ihren Konfigurationsabschnitt in der Datei web.config an (die oben registriert wurde).
1234567891011<ncContentOptimization><settings enableMinification="true"enableViewstateCaching="true"groupedViewStateWithSessions="true"viewstateThreshold="0"enableTrace="true"><cacheSettings cacheName="mycache"><expiration type="Sliding" duration="300"/></cacheSettings></settings></ncContentOptimization> - Registrieren Sie abschließend den HTTP-Handler im Abschnitt „HttpHandlers“ von web.config wie folgt:
1234567<add verb="GET,HEAD" path="NCResource.axd"validate="false"type="Alachisoft.NCache.Adapters.ContentOptimization.ResourceHandler,Alachisoft.NCache.Adapters, Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/>
Nach der Konfiguration NCache, du kannst das ... sehen ASP.NET View State Markieren Sie Ihre Bewerbung als:
1 2 3 4 5 6 7 |
< input type="hidden" name="__NCPVIEWSTATE" id="__NCPVIEWSTATE" value="vs:cf8c8d3927ad4c1a84da7f891bb89185" /> < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> |
Beachten Sie, dass ein weiteres verstecktes Tag mit hinzugefügt wird ASP.NET View State. Es enthält den eindeutigen Schlüssel, der zugewiesen ist ASP.NET View State Ihrer Seite in Ihrem verteilten Cache. Also wann immer Ihr Anwendungsserver es braucht ASP.NET View State Wert, es kann leicht aus dem Cache abgerufen werden.
Dadurch werden Sie eine bemerkenswerte Leistungssteigerung Ihrer ASP.NET-Antwortzeiten feststellen und auch Ihre Kosten für den Bandbreitenverbrauch werden deutlich reduziert.
Bitte erfahren Sie mehr darüber ASP.NET View State Caching durch Ausprobieren NCache ASP.NET View State Modul selbst.
Sie können verwenden NCache für Azure zum Speichern des ASP.NET-Sitzungsstatus für Microsoft Azure ASP.NET-Anwendungen. Hier ist ein Blog, der die Optionen von Microsoft Azure Session Storage und deren Gründe erklärt NCache für Azure ist unter allen verfügbaren Optionen in Microsoft Azure die beste.
https://20.200.20.123:86/storing-asp-net-session-state-in-a-microsoft-azure-distributed-cache/
Verwendet jemand erfolgreich Windows Azure Caching (Vorschau), um den Sitzungsstatus zu verwalten?