2015-10-15 9 views
8

Naprawiam błąd z ASP.NET OutputCache i to doprowadza mnie do szaleństwa. Chcemy buforować na serwerze, ale wygląda na to, że nie działa (było to dawno temu, w starszej wersji naszej aplikacji, ale niedawno odkryliśmy błąd przez przypadek).Jak sprawdzić ASP.NET MVC OutputCache działa na serwerze?

Lokalnie, po prostu nie mogę uzyskać buforowania do pracy po stronie serwera. Korzystanie z tego atrybutu:

[OutputCache(CacheProfile = "MyProfile", Location = OutputCacheLocation.Server)] // doesn't work 

Teraz w oparciu o kilka rzeczy czytałem przez googling wokół, tutaj jest ewentualnie istotne informacje:

  • buforowanie wyjścia jest włączona w IIS (localhost)
  • I DO użyj AuthorizeAttribute (niestandardowy z dziedziczeniem). Debagowałem w tym kierunku specjalnie i jestem w 95% przekonany, że to nie jest powód.
  • Zmieszałem z różnymi wartościami VaryByParams, nic nie działa.
  • Buforowanie ma działa po stronie klienta.

Mam otworzył sesję perfmon i dodano kilka liczników z grupy Web Service Cache, Widzę, że istnieje buforowane URL ale pamięć podręczna jest brakowało:

perfmon graph

Największym problemem/błędem, z którym mamy teraz do czynienia jest to, że OutputCache jest teraz nie działa w ogóle teraz. Udało nam się to naprawić, podając VaryByParams="" (pusty ciąg znaków). To zrobiło to dla klienta. Ale to jeszcze nie działa po stronie serwera.

Właściwie sprawdzam, czy działa, umieszczając punkt przerwania debugowania w akcji, która powinna być buforowana. Jest trafiony za każdym razem, co powinno oznaczać, że pamięć podręczna nie zostanie trafiona.

+0

Miałem podobny problem i był to problem z profilami pamięci podręcznej. Jeśli nie użyłem profilu pamięci podręcznej, a zamiast tego podłączyłem wartości bezpośrednio do contructor atrybutów, zadziałało. Czy próbowałeś tego? – heymega

+0

@heymega Próbowałem, i to nie robi różnicy. – MarioDS

+0

@MarioDS: Występuje ten sam problem. Czy udało ci się to rozwiązać? – user1107799

Odpowiedz

0

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

Nie ma gwarancji, że treści będą buforowane na czas określony przez użytkownika. Gdy zasoby pamięci stają się niskie, pamięć podręczna rozpoczyna eksmisje treści automatycznie.

Jeśli dostępne zasoby pamięci na serwerze są wystarczająco niskie podczas testów, pamięć podręczna natychmiast usunie zawartość. Jestem pewien, że może nawet odmówić umieszczenia twoich treści w pamięci podręcznej.

+0

Dzięki za podanie jednego powodu, ale nie w naszym przypadku. – MarioDS

Powiązane problemy