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 .
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.