Optimieren von ViewState

8

Hat jemand Ideen oder Referenzen, auf die er mich hinsichtlich der Optimierung des Viewstates meiner ASP .NET-Anwendung hinweisen könnte? Ich möchte es nicht alle zusammen ausschalten, und das Hauptziel der Optimierung ist es, die Leistung zu beschleunigen, so dass ich keine teure Funktion ausführen möchte, um den Ansichtszustand für bestimmte Steuerelemente rekursiv zu deaktivieren, da diese Funktion die Geschwindigkeit verlangsamen würde Ladezeit der Seite, die den Zweck besiegen würde.

Irgendwelche Ideen?

    
Adam 03.12.2009, 23:20
quelle

3 Antworten

6

Es gibt nicht viel, was ich dir sagen kann, außer "setze nicht viel in deine ViewState ".

Orte, an denen ich nach Optimierungen suchen würde:

  • Alles, was Sie zu ViewState hinzugefügt haben
  • Große Datenmengen, die an Steuerelemente für die Datenanzeige gebunden sind, wie GridViews , <x>Lists und Repeaters .

GridViews sind besonders schlecht bei ViewState ; Alles, was Sie in die Databind einbinden, ist der Fall. Wenn Sie also eine besonders große Liste binden, die ASP.NET erwartet, um die Paginierung für Sie zu verwalten, werden Sie eine riesige ViewState haben. Die einzige Möglichkeit, dies zu umgehen, besteht darin, nur jeweils eine Seite an die GridView zu binden. Dies bedeutet jedoch, dass Sie eine datenseitige Paginierung durchführen müssen, die genauso schmerzhaft sein kann, oder ViewState für deaktivieren Die GridView , was (wohl) nützliche Funktionen wie Inline-Bearbeitung bedeutet, sind nicht mehr verfügbar.

Hier gibt es keine Silberkugel.

    
Randolpho 03.12.2009, 23:28
quelle
9

Hier sind einige Ideen, wie Sie die Größe von ViewState optimieren können, die über die Leitung übertragen wird ( aus dieser Antwort kopiert ):

  • Deaktivieren Sie ViewState für Steuerelemente, die sie nicht benötigen (dies ist die effektivste Lösung). Z.B. Wenn Sie einige Daten auf dem Server zwischenspeichern können, können Sie alle datengebundenen Steuerelemente mit jeder Anforderung neu binden, und es ist nicht erforderlich, alles in ViewState zu speichern.
  • Aktivieren Sie die HTTP-Komprimierung auf dem Server (IIS) . Dies reduziert die Größe der Seite, die an den Client gesendet wird, einschließlich ViewState.
  • Komprimiert den ViewState . Dies hat einen zusätzlichen Vorteil gegenüber der HTTP-Komprimierung: Es reduziert auch die Größe von PostBacks (Daten, die zurück an den Server gesendet werden), da der ViewState während eines PostBacks immer an den Server zurückgesendet wird. Es gibt verschiedene Ansätze dafür, z.B. wie in diesem Blogpost gezeigt .
  • Speichern Sie den ViewState auf dem Server , anstatt ihn in einem ausgeblendeten Feld mit der Seite zu senden. Der einfachste Weg dazu ist die Verwendung des SesionPageStatePersister , aber dort sind andere Lösungen, die den ViewState auf dem Datenträger speichern, anstatt die Sitzung zu verwenden ( siehe hier zum Beispiel ).
M4N 05.12.2009 14:00
quelle
1

ViewState ist eine clientseitige Statusverwaltung und wird Teil Ihrer Request- und Response-Pakete. Ein starker Viewstate kann Ihre Anwendungsleistung tatsächlich verlangsamen. Eine schnelle Möglichkeit, die ViewState-Leistung zu optimieren, besteht darin, sie auf der Serverseite zu halten und nur dann zu verwenden, wenn sie benötigt wird. Dies ist sinnvoll, da ViewState nie wirklich auf dem Client-Browser-Ende verwendet wird und beim Zurückschreiben immer auf der Serverseite benötigt wird. Sie können ein verteiltes Caching-System wie AppFabric oder NCache verwenden, um ViewState auf der Serverseite zu speichern. Dies sollte die Leistung verbessern.

Ich habe persönlich mit NCache gearbeitet, das keinen Provider für den Code-Code-Wechsel zum ViewState-Caching hat.

Klicken Sie hier, um den Artikel für ASP.NET View State Caching anzuzeigen

    
Shoeb Lodhi 03.04.2018 12:52
quelle

Tags und Links