10 Stimmen

Verschieben von ViewState aus der Seite heraus?

Wir versuchen, die Seitenlast so weit wie möglich zu verringern. Da ViewState manchmal bis zu 100k der Seite anschwellen kann, würde ich es gerne komplett eliminieren.

Ich würde gerne einige Techniken hören, die andere Leute verwendet haben, um ViewState zu einem benutzerdefinierten Anbieter zu verschieben.

Dennoch gibt es ein paar Vorbehalte:

  • Wir haben im Durchschnitt 2 Millionen Besucher pro Stunde.
  • Aus diesem Grund sind Datenbanklesungen ein ernsthaftes Problem in der Leistung, so dass ich nicht ViewState in der Datenbank speichern möchte.
  • Wir sind auch hinter einem Load Balancer, so dass jede Lösung muss mit dem Benutzer Bouncing von Maschine zu Maschine pro Postback arbeiten.

Ideen?

0voto

FlySwat Punkte 165766

Aufgrund der typischen organisatorischen Aufblähung dauert die Beantragung neuer Hardware eine Ewigkeit, und die Beantragung von Hardware, die eine komplette Neuverkabelung unseres derzeitigen Systems erfordern würde, würde wahrscheinlich auf den heftigen Widerstand der technischen Abteilung stoßen.

Ich muss mir wirklich eine Softwarelösung einfallen lassen, denn das ist die einzige Welt, die ich einigermaßen unter Kontrolle habe.

Ein Hoch auf Enterprise :(

0voto

Erick Sgarbi Punkte 1212

Ich habe versucht, einige der Produkte zu finden, die ich in der Vergangenheit erforscht hatte und die genauso funktionieren wie StrangeLoops (aber softwarebasiert) Es sieht so aus, als ob sie das Geschäft aufgegeben haben, das einzige von meiner Liste, das noch da ist, ist ScaleOut aber sie sind auf die Zwischenspeicherung des Sitzungsstatus spezialisiert.

Ich weiß, wie schwer es ist, der Geschäftsleitung Hardware-Lösungen zu verkaufen, aber es ist immer eine gute Idee, die Geschäftsleitung zumindest dazu zu bringen, dem Vertriebsmitarbeiter der Hardware zuzuhören. Ich setze lieber Hardware ein, die mir eine sofortige Lösung bietet, weil ich dadurch Zeit für andere Aufgaben habe (oder Zeit gewinnen kann).

Ich verstehe, das ist wirklich ätzend, aber die Alternative wäre, den Code zu ändern, um ihn zu optimieren, und das würde vielleicht viel mehr kosten als die Anschaffung eines Geräts.

Lassen Sie mich wissen, wenn Sie eine andere softwarebasierte Lösung finden.

0voto

FlySwat Punkte 165766

Ich werde sehen, wenn ich mit einem Weg, um unsere aktuelle State-Server zu nutzen, um den Viewstate im Speicher enthalten kommen kann, sollte ich in der Lage sein, die Benutzer-Session-ID verwenden, um Dinge zwischen Maschinen synchronisiert zu halten.

Wenn ich eine gute Lösung gefunden habe, werde ich den urheberrechtlich geschützten Code entfernen und zur öffentlichen Nutzung freigeben.

0voto

Dale Ragan Punkte 18091

Oh nein, Bürokratie . Nun, das wird eine große Aufgabe sein. Sie erwähnten aquí dass Sie einen Zustandsserver verwenden, um Ihren Sitzungszustand zu erhalten. Wie haben Sie das eingerichtet? Vielleicht können Sie etwas Ähnliches auch hier tun?

Editar

Ahh @Jonathan, Sie haben während ich diese Antwort abtippte. Ich denke, dieser Weg könnte vielversprechend sein. Eine Sache ist, dass es definitiv speicherintensiv sein wird.

@Mike Ich glaube nicht, dass die Speicherung in der Session-Informationen wird eine gute Idee, aufgrund der Speicherintensität der Viewstate und auch, wie viele Male Sie benötigen, um die Viewstate zugreifen. Auf den SessionState wird viel seltener zugegriffen als auf den Viewstate. Ich würde die beiden getrennt halten.

Ich denke, die ultimative Lösung wäre die Speicherung des ViewState auf dem Client irgendwie und vielleicht einen Blick wert. Mit Google Gears könnte dies nun möglich sein.

0voto

JacquesB Punkte 40790

Haben Sie überlegt, ob Sie wirklich necesito all diese Ansichtsstaaten? Wenn Sie zum Beispiel ein Datengitter aus einer Datenbank befüllen, werden alle Daten standardmäßig im Viewstate gespeichert. Wenn das Raster jedoch nur zur Darstellung von Daten dient, benötigen Sie kein Formular und somit auch keinen Viewstate.

Sie benötigen den Viewstate nur dann, wenn es eine Interaktion mit dem Benutzer durch Postbacks gibt, und selbst dann können die aktuellen Formulardaten ausreichen, um den View neu zu erstellen. Sie können den Viewstate für Steuerelemente auf der Seite selektiv deaktivieren.

Sie haben eine ganz besondere UI, wenn Sie tatsächlich necesito 100K von viewstate. Wenn Sie den Viewstate auf das absolut Notwendige reduzieren, könnte sich herausstellen, dass es am einfachsten und am besten skalierbar ist, den Viewstate in der Seite zu behalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X