2016-06-02 6 views
0

Ich habe einige statische Werte aus der Datenbank, die in der Anwendung für jeden Benutzer angemeldet bleiben müssen. (Ich benutze ASP.Net MVC 4 Applikation)MemoryCache speichert das Objekt (Dataset) für alle Ajax-Aufrufe nicht - ASP.Net MVC-Anwendung

Dafür habe ich umgesetzt habe Memory (nicht sicher, ob dies besser als Httpapplicationstate oder System.Web.HttpContext.Current.Cache zu verwenden.). Ich bin dankbar, wenn ich einen Hinweis darauf bekommen kann.

//Create a custom policy as per the business need 
CacheItemPolicy wkflPolicy = new CacheItemPolicy(); // I dont want to set expiration 


if (wkflCache.Get("MyKey") == null) 
     { 
      // Caching all static DB values. 
      DataSet myDS= objEditComponent.GetDBValues(); 
      wkflCache.Add("MyKey", myDS, wkflPolicy); 
     } 

Sein für alle Postbacks persistierenden aber wenn ich Ajax Anruf von meinem cshtml mache (Ansicht) Seite kann ich den Cache-Wert so nicht erhalten hat, um eine anderen DB Anruf zu tätigen, nach Nullzustand zu überprüfen.

Tritt es wegen zu wenig Speicher auf (frage mich, wie jedes Mal, wenn ich einen Ajax-Anruf mache, ein wenig Speicher passiert) oder mir hier etwas fehlt?

Antwort

0

Es ist am besten davon auszugehen, dass alles, was Sie in den Cache stellen, zufällig gelöscht werden kann.

Wenn es etwas ist, das Sie die ganze Zeit benötigen und von allen Benutzern geteilt wird, schieben Sie es einfach in eine statische Variable. (Ideal, während alle seine Eigenschaften schreibgeschützt gemacht werden.)

Der Cache ist für Dinge, die Sie brauchen, die Zeit, aber kümmern sich nicht allzu sehr darum, wenn Sie erneut abrufen müssen.

Verwandte Themen