2009-05-14 11 views
1

Ich mag wäre zu fragen, ist es eine Möglichkeit, diese Funktionalität zu erreichen:Caching-Strategie für asp.net

Ich habe eine Ajax-Benutzer-Website (Baumansicht auf der linken Seite, und den Inhalt auf der rechten Seite) aktiviert . Wenn Benutzer einen Knoten auf der linken Seite auswählen, muss ich den zuletzt ausgewählten Knoten in der Datenbank speichern. Allerdings kann der Benutzer den Knoten ziemlich oft wechseln (sogar 5 oder 10 Mal pro Minute).

So würde Ich mag es auf die Anwendung Cache hinzufügen, wie:

cache["userName"]=selectedNodeID;

Gibt es ein Caching-Framework, das würde: bestimmte Aktion auf einem Cache-Elemente durchführen, wenn es nicht geändert wurde für die 5 sagen lassen Protokoll? Es würde mir erlauben, die letzte ausgewählte Knoten-ID nach 5 Minuten vor der letzten Änderung zu speichern. Wenn der Benutzer den Knoten vor Ablauf dieser Zeit ändert, würde ich nur den Cache-Wert aktualisieren und den Timer zurücksetzen.

Irgendwelche Hinweise?

Antwort

4

Sie können den Rückrufmechanismus verwenden, wenn das Cache-Objekt aus dem Cache entfernt wird. Wenn Sie die Cachedauer auf 5 Minuten setzen, können Sie in Ihrer Callback-Methode überprüfen, ob das Objekt bereits gespeichert wurde. Ist dies nicht der Fall, können Sie es in die Datenbank verschieben. In beiden Fällen können Sie das Objekt für weitere 5 Minuten direkt in den Cache zurücklegen.

z.B. Sie wäre so etwas wie dies als letzter Parameter Ihrer Cache.Insert Methode hat:

new CacheItemRemovedCallback (SaveItemToDatabaseAndReturnItToTheCache) 

und dann würden Sie die Callback-Methode entsprechend umsetzen.

weitere Informationen hier: http://weblogs.asp.net/kwarren/archive/2004/05/20/136129.aspx

+0

Danke für die Antwort, es funktioniert! – Adam

+0

Vorsicht bei Neustart des Anwendungspools oder bei vollständigen Systemfehlern. In diesen Fällen wird der Rückruf möglicherweise nie aufgerufen und die Daten werden nicht beibehalten. Verwenden Sie ein Transaktionssystem, um das Problem zu lösen. –