Zwischenspeichern von Daten in der Web-API
Ich habe das Zwischenspeichern müssen eine Sammlung von Objekten, die größtenteils statisch sind (vielleicht ändert sich 1x pro Tag) ist verfügbar in meinem ASP.NET Web-API OData-service. Dieses ResultSet wird über Aufrufe (d.h. keine client-Aufruf bestimmte) so muss es zwischengespeichert werden auf der Anwendungsebene.
Habe ich ein paar auf der Suche auf 'caching in Web-API', aber alle Ergebnisse waren über die 'output-caching'. Das ist nicht was ich Suche hier. Ich möchte die cache - 'Volk' - Kollektion, die wiederverwendet werden bei nachfolgenden aufrufen (könnte eine gleitende Ablaufzeit).
Meine Frage ist, da dies immer noch nur ASP.NET, verwende ich die traditionelle Anwendung caching-Techniken für die Persistenz dieser Sammlung in Erinnerung, oder gibt es etwas, was ich sonst noch tun müssen? Diese Sammlung ist nicht direkt an den Benutzer zurückgegeben, sondern als die Quelle hinter den kulissen für OData-Abfragen über API-Aufrufe. Es gibt keinen Grund für mich zu gehen, um die Datenbank bei jedem Anruf zu bekommen, die genaue gleichen Informationen über jeden Anruf. Ablaufende es stündlich sollte das ausreichen.
Jeder weiß, wie man richtig den cache die Daten in diesem Szenario?
InformationsquelleAutor der Frage atconway | 2013-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, die Zwischenspeicherung der Ausgabe ist nicht, was Sie suchen. Sie können die cache-Daten im Speicher mit MemoryCache zum Beispiel, http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx . Jedoch verlieren Sie diese Daten, wenn der Anwendungspool wird recycelt. Eine weitere option ist die Verwendung eines verteilten cache wie AppFabric-Cache oder MemCache ein paar zu nennen.
InformationsquelleAutor der Antwort Pablo Cibraro
Die Lösung, die ich landete mit einbezogen
MemoryCache
imSystem.Runtime.Caching
namespace. Hier ist der code, der landete zum Zwischenspeichern meiner Sammlung:Hier ist eine weitere Möglichkeit, die ich gefunden mit
Lazy<T>
zu berücksichtigen, sperren und Parallelität. Gesamt-credit geht an diesem post: Der Umgang mit teuren Gebäude-Operationen unter Verwendung von MemoryCache?InformationsquelleAutor der Antwort atconway