2015-10-15 4 views
8

Я исправляю ошибку с ASP.NET OutputCache, и это сводит меня с ума. Мы хотим кэшировать на сервере, но он не работает (это было давно, в старой версии нашего приложения, но мы недавно обнаружили ошибку).Как проверить ASP.NET MVC OutputCache работает на сервере?

Локально, я просто не могу заставить кеширование работать на стороне сервера. С помощью этого атрибута:

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

Теперь, основываясь на несколько вещей, которые я читал прибегая к помощи вокруг, здесь, возможно, соответствующая информация:

  • кэширование вывода включена в IIS (локальный)
  • I DO использовать AuthorizeAttribute (пользовательский с наследованием). Я отлаживал это специально, и я на 95% уверен, что это не причина.
  • Я искал различные значения VaryByParams, ничего не работает.
  • Кэширование Работа на стороне клиента.

Я открыл сессию perfmon и добавлены некоторые счетчики из Web Service Cache группы, Все, что я вижу, что там являются кэшировать URL, но кэш пропустил:

perfmon graph

Большая проблема/ошибка, с которой мы сталкиваемся сейчас, заключается в том, что OutputCache не работает вообще прямо сейчас. Мы смогли исправить это, указав VaryByParams="" (пустая строка). Это сделало это для клиента. Но сервер еще не работает.

Я действительно проверяю, работает оно или нет, помещая точку останова отладки в действие, которое должно быть кэшировано. Он получает удар каждый раз, что должно означать, что кеш не попал.

+0

У меня была аналогичная проблема, и это было проблемой с профилями кеша. Если я не использовал профиль кэша и вместо этого подключил значения непосредственно к контрибутору атрибутов, он работал. Вы пробовали это? – heymega

+0

@heymega Я попробовал, и это не имеет значения. – MarioDS

+0

@MarioDS: Я сталкиваюсь с той же проблемой. Вам удалось решить эту проблему? – user1107799

ответ

0

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

Там нет никакой гарантии, что содержание будет кэшируются на количество времени, которое вы укажете. Когда ресурсы памяти становятся низкими, кэш начинает вытеснять контент автоматически.

Если доступные ресурсы памяти на вашем сервере достаточно низки во время тестирования, кэш немедленно вытеснит контент. Я уверен, что он может даже отказаться от размещения вашего контента в кеше.

+0

Спасибо за предоставление одной причины, но это не так в нашем случае. – MarioDS

Смежные вопросы