2009-07-17 9 views
0

Ich habe diese generische Liste, die im Speicher zwischengespeichert wird. Wie kann ich während des Tests dieses Objekt manuell aus dem Cache freigeben? Ich habe den Cache im Browser gelöscht, aber immer noch, wenn ich ihn aktualisiere, bekomme ich den gleichen Satz von Produkten, weil er mein zwischengespeichertes Objekt in meiner Datenbankabrufmethode überprüft.Wie Sie Objekte aus dem Speicher freigeben

Antwort

0

coffeeaddict Sie Cache-Ablauf und die Entfernung zu implementieren, um benötigen für Ihre App, um aktualisierte Daten zu verwenden. Wenn Sie Ihre eigene Caching-Implementierung verwenden, stellen Sie sicher, dass Sie diese zwischengespeicherten Daten jedes Mal ungültig machen, wenn Sie die permanente Caching-Datei aktualisieren. Wenn Sie sie also das nächste Mal anfordern, wird sie den vollständigen Pfad durchlaufen und erneut im Speicher zwischengespeichert.

2

Try Cache.Remove() -Methode zu entfernen, um ein Objekt von ASP.NET-Cache: sind

Cache.Remove("CacheKey"); 

Da die zwischengespeicherten Elemente in Serverspeicher gespeichert, kann man nicht klar Anwendungscache durch den Browser-Cache zu löschen.

3

Sie verwechseln den Cache des Browsers (auf dem Clientcomputer) mit serverseitigem Caching.

0

Ihre Datenbankabrufmethode wird auf dem Server ausgeführt, was nichts mit Ihrem Browsercache zu tun hat (weshalb das Löschen des Cache Ihres Browsers nichts bewirkt).

Ihre Frage ist nicht zu klar, aber ich nehme an, dass Sie das ASP.Net Cache-Objekt für Ihr Caching verwenden.

Sie müssen der Datenbankabrufmethode Code hinzufügen, um das Element im ASP.net-Cache zu aktualisieren. Es würde helfen, wenn Sie den Code schreiben könnte, die Sie haben, aber im Grunde wäre es wie folgt aussehen:

var data = DatabaseFetchStuff.... 
Cache["databaseInfoKey"] = data; 
+0

Also ich habe eine BL-Methode. Zuerst überprüft es eine generische Liste, die wir für die Liste der Datensätze füllen. Wenn das zwischengespeicherte Objekt null ist, fährt es mit dem Aufruf unserer DB-Layer-Methode fort, um die Liste aus der Datenbank abzurufen. Das Problem für mich ist, wenn die zwischengespeicherte Liste bereits gefüllt ist, ruft sie nie meine DB-Methode auf. Ich möchte, dass es meine DB-Methode aufruft, weil ich die zugrunde liegende parametrisierte SQL dahinter geändert habe und die Ergebnisse testen möchte. Ich könnte die Prüfung für das zwischengespeicherte Objekt auskommentieren und es zwingen, meine DB-Methode aufzurufen, um die Aufzeichnungen zu erhalten, aber nur neugierig auf einen anderen Weg, dies zu tun. – PositiveGuy

+0

Ich benutze nicht das asp.net Cache-Objekt. Wir erklären ein Objekt, das im Speicher erstellt wurde, einfach so. Auch hier überprüft unsere BL-Methode das Objekt im Speicher, um festzustellen, ob es zuvor mit Daten gefüllt wurde. So überprüft es beispielsweise eine generische Listeninstanz für die Daten. Wenn null, gehen Sie die Daten aus der Datenbank holen und füllen Sie dann das zwischengespeicherte Objekt erneut, damit die nächste generische Listeninstanz im Speicher die Daten zwischenspeichert. – PositiveGuy

+0

Sie müssen wirklich den Code veröffentlichen. Wenn dies ASP.Net ist, wird ein Objekt im Speicher zwischen Seitenanforderungen nicht beibehalten. – womp

Verwandte Themen