2009-08-28 20 views
1

Ich möchte etwas Caching auf der Datenzugriffsebene durchführen, um die Leistung zu steigern. Ich habe beschlossen, dass ich den HTTPContext-Cache verwenden werde, mit einer Abstraktionsschicht oben, damit ich später bei Bedarf andere Cache-Strategien ein- und ausschalten kann.Zwischenspeichern von Datenzugriffsschicht-Ergebnissen

Grundsätzlich sollte der Cache-Variante sein, was bedeutet, dass für jedes einzelne Verfahren wird es ein anderes Ergebnis Cache-Speicher die Werte basierend auf, die in übergeben werden.

Meine Frage ist gegeben, wenn ich einen „Cache haben bin zu wollen pro Funktion "und für das System zu bestimmen, ob die Datenbank oder der Cache auf der Grundlage der Werte treffen, die an die Methode übergeben werden, wie würde ich dies tun (dh ein Hash der Werte der Elemente oder etwas - aber dort muss ein besserer Weg sein).

Ich weiß, dass ich einige Sachen mit Cross-Cut-Problemen und dem EL und dem Caching-Application-Block machen könnte, aber der Overhead davon ist ein bisschen mehr, als ich suche. Ich wünsche etwas ziemlich geringes Gewicht zu tun, und dass ich kontrollieren kann (dh i in einem Parameter übergeben konnte, dass ich überprüfen, welche den Cache umgehen würde - zum Beispiel)

Prost Anthony

Antwort

2

Wir verwenden Enterprise Library Caching Anwendungsblock dafür. Entlib Cache funktioniert wie ein Wörterbuch mit einem Schlüssel und einem Wert.

Mit dem Entlib-Cache können Sie mehrere benannte Caches erstellen, in Ihrem Fall wäre es einer pro Funktion.

In jedem Cache können Sie die Parameter als Schlüssel verwenden. Sie können es dann wie folgt vorgehen:

  • Try Wert aus dem Cache auf Schlüssel basiert zu erhalten.
  • Wenn der Wert null ist, fehlt er im Cache.
  • Daher erhalten Sie Wert aus der Datenbank und platzieren Sie das Ergebnis im Cache, so dass es beim nächsten Mal verfügbar ist.
Verwandte Themen