/ / Buforowanie w MVC .NET - c #, ajax, asp.net-mvc-4, buforowanie

Buforowanie w MVC .NET - c #, ajax, asp.net-mvc-4, buforowanie

Wyświetlam tabelę na podstawie zapytania z aBaza danych. Żądanie ajax jest używane do pobierania danych z tabeli, serializowania do jsona i przy użyciu biblioteki JavaScript datatables na froncie, dane są aktualizowane.

Mam wymóg, aby móc następnie wysyłaćta tabela do Excela. To musi być w bardzo specyficznym formacie, dla którego napisałem klasę itp. W C #, która działa poprawnie. Mam także kontroler, który następnie przekaże strumień plików, aby użytkownik mógł pobrać plik.

Moje pytanie dotyczy buforowania danych zBaza danych. Nie chcę wracać do bazy danych i ponownie uruchamiać zapytania, aby następnie przekazać raport do mojego eksportera Excela, który powinien być przechowywany w jakiś sposób - najnowszy raport, który uruchomił użytkownik.

Są dwa sposoby, aby to zrobić:

1) buforowanie klienta - zapisz najnowszy raport uruchomiony przez użytkownika, a następnie wyeksportuj go do najnowszego raportu z pamięci podręcznej.

2) odesłać ostatnią odpowiedź json z wywołania Ajax i deserialise w kontrolerze z powrotem do obiektu raportu.

Numer jeden wydaje się najbardziej logiczny, ponieważ dwa wydają się bałaganiarskie i podatne na błędy. Chciałbym wiedzieć, czy jest to najlepsze rozwiązanie, a jeśli nie sugestia, jaka metoda byłaby najlepsza.

Odpowiedzi:

2 dla odpowiedzi № 1

Myślę, że istnieje trzecia opcja. Mogę pomyśleć o 2 prostych metodach buforowania serwera, które mogą działać dla Ciebie.

  1. Buforowanie wyjściowe
  2. System.Runtime.Caching

Buforowanie danych wyjściowych jest bardzo przydatne i niezwykle łatwe, jeśli ustawisz je w akcji

W poniższym przykładzie akcja będzie buforowana dla 10 sekcji

public class HomeController : Controller
{
[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
return View();
}

}

Możesz nawet mieć klucz buforujący oparty na parametrze

 [OutputCache(Duration = int.MaxValue, VaryByParam = "id")]
public ActionResult Details(int id)
{
ViewData.Model = _dataContext.Movies.SingleOrDefault(m => m.Id ==    id);
return View();
}

Oto link do buforowania wyjścia

http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs

Jeśli jednak chcesz buforować po stronie serwera za pomocą System.Runtime.Caching, możesz znaleźć tutaj miły przykład http://deanhume.com/home/blogpost/object-caching----net-4/37