2010-12-11 22 views
6

Przy użyciu formularzy sieciowych ASP.NET MVC możemy umieścić wyjściową pamięć podręczną na poziomie kontrolera lub widoku. Jak wspomnieć o "outputcache" na stronie .cshtml?OutputCache w przeglądarce maszynki Razor .cshtml strona

Nigdzie go nie znalazłem. Gdzie mogę uzyskać składnię?

+0

Witaj Michale; Czy znalazłeś odpowiedź sam? –

Odpowiedz

7

Co to znaczy "ASP.NET MVC Web Forms"? Jeśli odnosisz się do atrybutu OutputCache w dyrektywie Page, to jest ASP.NET Web Forms.

ASP.NET MVC ma buforowania danych wyjściowych na poziomie działania kontrolera:

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

Jest to niezależne od silnika widoku (ASPX/Razor).

+0

Przepraszam, powinienem był wspomnieć to jako silnik formularzy internetowych. – ram

+0

Co masz na myśli "silnik formularzy internetowych"? Czy używasz formularzy sieci Web ASP.NET MVC lub ASP.NET? Web Forms = dyrektywa OutputCache w dyrektywie strony ASPX. MVC = atrybut OutputCache w działaniu kontrolera. – RPM1984

+1

Można również ustawić go w widoku: http://haacked.com/archive/2009/05/12/donut-hole-caching.aspx Ale jak to zrobić z maszynowym podglądem? – Peter

2

Korzystając z formularzy internetowych ASP.NET MVC można umieścić wyjściową pamięć podręczną na poziomie widoku, ale nie będzie to miało wpływu. Jest tam, ponieważ jest dziedzictwem klasycznego ASP.NET. W ASP.NET MVC wyjściowa pamięć podręczna powinna zawsze znajdować się w akcji kontrolera.

Ponieważ umieszczanie wartości pamięci podręcznej w widoku nie ma sensu w nowo wprowadzonym mechanizmie podglądu maszyn Razor, nie ma takiej możliwości. Powinieneś zawsze umieszczać ten atrybut w akcji kontrolera.

+1

Phil Haacked wydaje się nie zgadzać: http://haacked.com/archive/2009/05/12/donut-hole-caching.aspx – Peter

+2

@DePeter Ale jak to zrobić w brzytwie? – AaronLS

2

Patrz ostatni post przez Mistrza Gu na ten temat: MVC2 Announcement

szczególnie ta część:

wyjściowa buforowanie Ulepszenia

ASP.NET MVC systemu buforowania wyjścia 3 za nie dłużej wymaga określenia właściwości VaryByParam podczas deklarowania atrybutu [OutputCache] na Metoda działania kontrolera. MVC3 teraz automatycznie zmienia wyjście buforowane wpisy gdy masz wyraźne parametry na metody działania - pozwala na czysto umożliwić wyjście buforowanie na działaniach wykorzystujących kod jak poniżej:

alt text

Oprócz obsługa buforowania wyjściowego w całości strony, ASP.NET MVC 3 również obsługuje buforowanie częściowe strony - które umożliwia buforowanie regionu wyjścia i ponowne wykorzystanie go w wielu żądaniach lub kontrolerów. Przycisk [OutputCache] zachowanie do częściowego buforowanie stron było aktualizowana RC2 tak, że sub-content buforowane wpisy są zmieniane na podstawie parametrów wejściowych w przeciwieństwie do struktury URL wniosku najwyższego poziomu - co sprawia scenariusze buforowania zarówno łatwiejsze i silniejsze niż zachowanie w poprzednim RC.

To bardzo poprawia sytuację.

  1. Wystarczy wspomnieć o OutputCache w akcji kontrolera, która zajmie się zarabianiem wyniku tej akcji przez określony czas. Pamięć podręczna zostanie automatycznie zmieniana przez zdefiniowanych parametrów działania (co jest zwykle pożądane zachowanie.)
  2. Będzie również działać transparentnie na Child Actions (te wywoływane przez Html.Action (...))
+0

Co to jest rozwiązanie Twojej próbki - metoda Brewse - czy implementujesz parametry poziomu gwintu? Na przykład; Metoda może mieć wbudowany parametr jako ciąg lang = Thread.CurrentThread.CurrentUICulture.cultureInfo.DisplayName i ten parametr nie ma sensu dla znaku metody (ponieważ ma tylko jeden parametr jako kategorię nazwy, ale wynik zależy od kultury. –

+0

to nie odpowiada pytanie, opisuje tylko niektóre części buforowania. – twomm

1

Wygląda na to, że inni odpowiedzieli na główne pytanie, które jest - , nie konfigurować buforowania stron na stronie/pliku cshtml w MVC3 +, użyj metody akcji w kontrolerze.

Jednak w przypadku bardziej złożonych scenariuszy można uzyskać dostęp do obiektu WebCache za pomocą składni maszynki Razor.

Niektóre z tych scenariuszy to stare buforowanie pączków/pączków (lub Donut/Dounut). Wątek skupiony na MVC3 tutaj na Stack Overflow.

Znaleźliśmy również pakiet NuGet MvcDonutCaching wspomniany przez Denis Huvelle, który rozwiązuje problem dla 3 & 4 - ale go nie przetestowałem.

Powiązane problemy