2012-03-06 9 views
16

Próbuję użyć atrybutu OutputCache w mojej aplikacji MVC i nie wydaje się do pracy, gdy używam OutputCacheLocation.Client:OutputCache Lokalizacja = Klient nie wydaje się działać

public class HomeController : Controller 
{ 
    [OutputCache(Duration=15, Location=OutputCacheLocation.Client)] 
    public ActionResult Client() 
    { 
     ViewBag.Message = "The current time is " + DateTime.Now.ToString("hh:mm:ss"); 

     return View(); 
    } 

    [OutputCache(Duration=15, Location=OutputCacheLocation.Any)] 
    public ActionResult Any() 
    { 
     ViewBag.Message = "The current time is " + DateTime.Now.ToString("hh:mm:ss"); 

     return View(); 
    }   
} 

Pierwszy z nich nie buforuje . Co sekundę trafiam na stronę, a ona zmienia czas. Drugi działa. Zmienia czas tylko co 15 sekund. Czy jest coś, czego mi brakuje? Debuguję to przy użyciu IE8 i wbudowanego serwera programistycznego w Visual Studio.

+4

"Klient" oznacza dosłownie klienta, tj. IE. Więc jeśli trafisz stronę ręcznie, nie grasz według reguł; [buforowanie po stronie klienta oznacza, że ​​nie powinieneś nawet trafić na stronę.] (http://msdn.microsoft.com/en-us/library/system.web.ui.outputcachelocation.aspx) – bzlm

+0

@bzlm co zrobić masz na myśli? Jeśli przejdę do/home/client, a następnie do innej strony i z powrotem do/home/client. Czy nie powinienem otrzymać obsługiwanej strony z pamięci podręcznej? (tak długo jak jestem w ramach czasowych?) – Joe

+1

@bzlm czekaj, rozumiem. naciśnięcie klawisza F5 unieważnia pamięć podręczną, nawigacja z/służy do tej samej strony. Nie wiedziałem o tym. powinieneś opublikować to jako odpowiedź. Przeszukałem cały Internet i nie mogłem znaleźć tego ciekawostka. – Joe

Odpowiedz

17

Jeśli trafisz na F5, usuniesz pamięć podręczną klienta. Sposób działania pamięci podręcznej klienta polega na tym, że w witrynie znajdują się odsyłacze wskazujące na akcję Client z niektórych innych widoków, a gdy użytkownik kliknie na te linki, zostanie wyświetlona wersja z pamięci podręcznej (zakładając oczywiście, że robi to w przedziale która strona jest buforowana).

+1

Ma sens. Okazuje się również, że jeśli po prostu wpiszesz ponownie adres, to wyświetli się wersja z pamięci podręcznej, ale masz rację, F5 wyczyści pamięć podręczną. – Dismissile

+2

@ Dismissile, myślę, że to zachowanie różni się nieco od przeglądarki, ale tak, ogólnie po prostu wpisanie adresu będzie respektować pamięć podręczną, a F5 albo tymczasowo pominie pamięć podręczną *, albo * wyrzuci buforowany zasób. – bzlm

+0

@bzlm Dzięki za dodatkowe informacje. – Dismissile

Powiązane problemy