Frage

Sagen wir, ich habe einige 10 „Kategorien“, die ich in einer Web-App verweisen müssen. Ich bin diese Kategorien in der DB speichere Aktuell und sie am Abrufen (Kategorienamen und id) bei Pageload in meiner Basepage, sie in einer Hash-Tabelle zu speichern und dann die Hash-Tabelle mit den Kategorien zu verweisen. Ich erkannte, dass der DB-Aufruf während jedes Pageload gemacht wird. Ich brauche nur diese Kategorien einmal ziehen, wie sie nie während einer Sitzung ändern. Was ist der beste Weg, dies zu tun?

  1. Tu, was ich tue, aber speichern Sie es als Application-Variable?

  2. Hard Code die Kategorien im Code, und tun, weg mit der Datenbank?

  3. Speichern Sie die Kategorien in einer Session-Variablen? Und rufen Sie die DB nur, wenn die Sitzung leer ist?

  4. Oder etwas anderes?

Ich bin nur neugierig zu wissen, was die beste Praxis zu tun solche Dinge ist.

War es hilfreich?

Lösung

Wenn die Kategorien sind benutzerabhängig, dann würde ich speichern sie in der Session-Variablen; sonst würde ich die ASP.NET Caching-Funktionalität (oder bevorzugte verteilte Caching) verwenden. Dies ermöglicht es Ihnen, die Datenbank zu vermeiden, schlagen, während in der Lage zu kontrollieren, wie lange die Kategorien für zwischengespeichert werden sollen.

Andere Tipps

die Datenbank aufrufen, ist nicht immer so teuer, wie es scheint, eine typische Webseite Dutzende von Anrufen an die DB auf jedem Pageload macht. Aber wenn es in Bezug auf Leistung lästig wird, sollten Sie eine ORM-Lösung. Die ausgezeichnete Open-Source- NHibernate in den Sinn kommt, was die „de facto“ Standard für die Zuordnung von Datenbanken zu Klassen und Objekten. Jenseits der Abbildung stellt es automatisch zwei Ebene des Caching und Verbindungs-Pooling. Ohne zu viel Mühe, übertrifft Ihre Website alle anderen durch einen Erdrutsch.

Der Nachteil eines ORM verwenden? Für viele Menschen ist es eine ziemlich steile Lernkurve berücksichtigt. Wenn Sie in diese lesen möchten, stellen Sie sicher, einen Besuch in der NHibernate Best Practices bezahlen . Ein harter Lese zuerst, aber auf jeden Fall lohnt.

Wenn Sie NHibernate mit FluentNHibernate kombinieren, wird es ein Kinderspiel zu verwenden.

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