Проблема : У меня есть веб-сайт ASP.NET, и я не верю, что мой код правильно получает OutputCached. Я использую счетчики производительности IIS7, чтобы показать мне попадания или промахи в секунду.
У меня простой веб-сайт ASP.NET MVC. Я использую встроенную магию ASP.NET Output Cache.
Вот пример кода: -
[AcceptVerbs(HttpVerbs.Get)]
[ApiAuthorize] // <-- this checks the querystring for a "key=1234".
// Doesn't find it, then it throws a 401 NOT AUTH exception.
[OutputCache(CacheProfile = "HomeController_Foo")]
public ActionResult Foo(string name, byte? alpha, byte? beta)
{
}
, значит, каждый URL-запрос может выглядеть следующим образом: -
Теперь, обратите внимание, как у меня есть OutputCache, ссылающийся на файл конфигурации? вот оно ...
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="HomeController_Foo" duration="3600" varyByParam="key;name;alpha;beta"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Ничего сложного ...
так вот кикер! Когда я подтверждаю, что это происходит с помощью счетчиков производительности IIS7, он говорит, что число пропущенных кэшей в секунду составляет 100% запросов, которые я делаю в секунду. Хиты выходного кэша равны 0 / сек.
Я использую стороннюю программу нагрузочного тестирования для загрузки моего сайта с запросами. Теперь, каковы исходные данные? список имен. Программа повторяет все имена, затем возвращается к началу, повтор полоскания. Так что ОБЯЗАТЕЛЬНО вызывать одну и ту же строку запроса хотя бы один раз. Файлы журнала IIS подтверждают это.
Я не передаю никаких данных для альфы или беты.
это моя строка запроса, которую я нажимаю ....
... где я продолжаю подставлять 'hello + world' именами из файла источника данных, и журналы IIS подтверждают это.
Итак ... я смотрю на неправильный счетчик производительности? Есть ли какие-то другие хитрости, чтобы увидеть, если он кешируется? Код очень быстрый, поэтому трудно сказать, является ли это кэшированным результатом или нет.