Frage

Ich versuche, eine Entscheidung darüber zu treffen, wie meine Daten anzuzeigen. Was ich habe, ist jetzt eine Liste der Produkte in einem Repeater angezeigt. Aber für die Code-Wartung Ich habe meine Produktspenden in einem separaten Usercontrol und Laden sie in einer Schleife mit db Ergebnissen mit Loadcontrol.

Die Produktkontrolle selbst ist sehr einfach, nur wenige öffentlichen Eigenschaften wie Titel, URL, Bewertung, aber ich bin nicht sicher, ob dies meine Leistung auswirken. Ich habe hier und in Foren einige Lesen und einige Leute sagen, es ist nicht die beste Praxis vor allem, wenn Sie mehr als 20 oder 30 dieser Kontrollen haben.

So ist es wirklich eine Performance Hit mit dieser Methode oder tut es mit rund 10.000 Zugriffe pro Tag in Ordnung bleiben. Alle anderen Vorschläge sind willkommen auch.

War es hilfreich?

Lösung

habe ich einige Tests, weil ich in diesem wie auch interessiert war, und es scheint, dass es wie eine ziemlich deutliche Leistungseinbußen auf Loadcontrol ist im Vergleich zu einer normalen Klasse instanziieren.

testete ich 100.000 Instanzen einer einfachen Klasse mit einer Eigenschaft vs 100.000 Fälle von Loadcontrol Erstellen Sie eine neue leere Kontrolle zu laden. Und es war 16ms für die Klassen vs 1950ms für die Laststeuerung. Es scheint eine Menge Aufwand zu sein. Ich habe bemerkt, dass, wenn ich mehr konstituierende Steuerelemente für den Benutzer steuert die Ladezeit stieg hinzugefügt. (Dies ist nur die Last habe ich nicht wirklich fügen Sie die Steuerelemente der Seite oder machen sie)

Ist es genug ein Treffer für einen Benutzer wahrnehmbar zu sein? Wahrscheinlich nicht, wenn Sie eine große Menge von Instanzen mit Loadcontrol geladen werden.

Andere Tipps

Ich denke, dass wahrscheinlich für jedes Produkt eine separate Benutzersteuerung zu machen ist nicht der beste Weg zu gehen.

Allerdings sind Sie bereits zum Teil, wo man für meinen Vorschlag sein müssen.

Warum Sie nicht über eine Klasse für Ihre Artikel machen, mit all den Eigenschaften, die Sie bereits auf Ihrer Benutzersteuerung definiert haben.

Wenn Sie die Produkte abrufen Sie anzeigen, rufen Sie eine Sammlung von Produkten (Schleife durch die Datensätze und erstellen Sie die Sammlung) (Liste zum Beispiel), und verwenden Sie die Sammlung als Datasource für Ihren Repeater.

Wenn Sie Page.LoadControl innerhalb einer Schleife verwenden, trennen Sie es in eine eigene Funktion ist, und dies wird ASP.Net sagen die Steuerung zwischenzuspeichern, anstatt sie von der Festplatte jedes Mal geladen werden.

Beispiel: (VB)

Private Function LoadMyControl() As myCustomControl1
    Return Page.LoadControl("....")
End Function

Dann ...

For each [....]
   Dim myCtrl1 as myCustomControl1 LoadMyControl()
   myCtrl1.prop1 = "blah"
   myPlaceholder1.Controls.Add(myCtrl1)
Next

Mit dem es innerhalb eines Funktionsaufrufes Einkapseln der Cache-Maschine denkt, es ist die gleiche Benutzersteuerung (die es ist) und wird nur die Platte einmal zugreifen, die Beschleunigung es deutlich zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top