2 Stimmen

Wie vermeidet man zu viele Abfragen an die Datenbank in asp.net?

Zu den Methoden gehören: statische Variablen, Viewstate, Session und Cache, um das wiederholte Laden zu vermeiden und weniger Abfragen an die Datenbank zu stellen.

Was ist Ihrer Meinung nach die beste der 4 oben genannten Methoden? Ich denke, der Cache ist die beste Methode? Oder irgendwelche anderen Methoden besser in Asp.net 3.5 oder höher?

0 Stimmen

Ich stimme mit Ihnen überein, denn es kann seinen eigenen Speicher verwalten (bei Bedarf löschen). Wenn Sie SQL-Server mit .NET verwenden, können Sie SqlCacheDependency verwenden, um Ihre Cache & DB-Daten synchron zu halten!

0 Stimmen

Alle oben genannten Lösungen sind Caching-Lösungen. Sie unterscheiden sich nur im Kontext. Statische Variablen zwischenspeichern die Daten im Speicher während der Lebensdauer der Appdomain, so dass sie normalerweise von allen Benutzern verwendet werden können. Viewstate speichert serialisierte Daten beim Benutzer und nur für diese Antwort/Anfrage. Session cached Daten (In-Memory oder serialisiert, je nach Session Storage) nur für den aktuellen Benutzer.

0 Stimmen

Einzelner Webserver oder Webfarm? Welche Art von Lastausgleich? Sticky oder nicht? All diese Fragen sind ausschlaggebend für die "richtige" Antwort.

2voto

Scott Mitchell Punkte 8549

Wenn die abzurufenden Daten benutzerspezifisch sind, sollten Sie die Verwendung von Session. Wenn es sich um dieselben Daten handelt, die von allen Benutzern gemeinsam genutzt werden, sollten Sie den Cache verwenden.

Ich würde davon abraten, View State zum Cachen von Datenbankergebnissen zu verwenden, da dies die Größe des gerenderten Markups schnell aufbläht. Darüber hinaus muss der Inhalt des View-Status nicht nur heruntergeladen werden, sondern wird auch an den Server zurückgeschickt, wenn das Formular abgeschickt wird, so dass Sie mit dem View-Status die Leistungseinbußen doppelt bezahlen.

Eine weitere Option, die Sie nicht erwähnt haben, ist die Verwendung der HttpContext.Items-Sammlung. Dies ist eine gute Möglichkeit, um Datenbankdaten zwischenzuspeichern pro Anfrage . Diese Technik ist sehr hilfreich, wenn Sie viele separate Module auf einer Seite haben (z. B. die Masterseite und die Benutzersteuerelemente), die dieselben Daten abrufen, da diese Daten einmal angefordert und dann für die Dauer der jeweiligen Anforderung zwischengespeichert werden können. Weitere Informationen finden Sie unter HttpContext.Items - ein Cache-Speicher für jede Anfrage .

1voto

Mark Punkte 10656

Es gibt keine einheitliche Antwort auf Ihre Frage. Eine solide Datenzugriffsstrategie, die skalierbar und leistungsfähig sein soll, wird wahrscheinlich mehrere oder sogar alle der von Ihnen genannten Instrumente und möglicherweise noch weitere umfassen.

0voto

Oren A Punkte 5620

Natürlich werden Sie viewState nicht verwenden, wenn Sie persistente Daten über eine ganze Sitzung hinweg benötigen, und Sie werden auch keine benutzerspezifischen Daten in Ihrem Anwendungsobjekt speichern.

viewState - pro Seite
Sitzung - pro Sitzung (pro Benutzer)
Antrag - pro Antrag
Cookie - pro Benutzer (aber nicht pro Sitzung - eher über alle Sitzungen hinweg)

Normalerweise verwendet man das Cache-Objekt, um Objekte auf der Anwendungsebene zwischenzuspeichern.

Das war's. Jeder hat eine andere Rolle.

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