2010-12-18 13 views
0

ich habe ich seite wo ich autocomplete jquery plugin verwenden. Dies könnte aus der Datenbank filtern. aber ich möchte keine Anfrage an die DB richten. also habe ich es in das Session-Objekt als List geschrieben. und jedes Mal, wenn ich Daten aus dieser Sitzung filtere. was mache ich falsch oder habe ich einen anderen weg?asp.net mvc filterung daten

Antwort

1

Ich würde Ihnen empfehlen, das Cache-Objekt anstelle der Sitzung zu verwenden. Denken Sie daran, dass die Sitzung an einen bestimmten Benutzer gebunden ist. Wenn also ein anderer Benutzer zu Ihrer Site kommt, wird er auch die Datenbank aufrufen. Das Cache-Objekt ist allen Benutzern gemeinsam. So könnte Ihre Controller-Aktion in etwa so aussehen:

public ActionResult Foo(string q) 
{ 
    var data = HttpContext.Cache[q]; 
    if (data == null) 
    { 
     data = FetchFromDb(q); 
     HttpContext.Cache[q] = data; 
    } 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 
+0

hat dort eine Begrenzung im Cache. Kann ich 10000 Zeilen in den Cache schreiben? – AEMLoviji

+0

@AEMLoviji, hängt davon ab, wo Sie den Cache zum Speichern konfiguriert haben. Standardmäßig ist es im Speicher gespeichert, daher ist das Limit der verfügbare Speicher. Aber Sie könnten es verteilen, indem Sie Anbieter verwenden. –

+0

ich verstehe dich. Es wird standardmäßig im Serverspeicher als Sitzungsobjekt gespeichert. – AEMLoviji