Почему счетчик HttpContext.Cache всегда равен нулю? - PullRequest
2 голосов
/ 13 апреля 2010

Я настроил несколько страниц с профилями OutputCache и подтвердил, что они кэшируются с помощью нескольких браузеров и запросов на получение страницы с отметкой времени, которая соответствует всем запросам. Когда я пытаюсь перечислить HttpContect.Cache, он всегда пуст.

Есть идеи, что здесь происходит или куда мне вместо этого обращаться за этой информацией?

Обновление:

Это не кеш клиента, потому что несколько браузеров видят один и тот же ответ. Вот немного кода, чтобы объяснить, что происходит.

Настройки кэширования Web.Config

<system.web>
    <caching>
        <outputCacheSettings>
            <outputCacheProfiles>
                <clear/>
                <add name="StaticContent" duration="1200" varyByParam="none"/>
                <add name="VaryByParam" duration="1200" varyByParam="*"/>
            </outputCacheProfiles>
        </outputCacheSettings>
    </caching>
     ...
</system.web>

** Метод действия с кэшированием

[OutputCache(CacheProfile = "StaticContent")]
public ActionResult Index()
{
    return View(new CollaborateModel());
}

Код для перечисления кэша, да, это грубо, это определяется в методе действия контроллера

    var sb = new StringBuilder();

    foreach (KeyValuePair<string, object> item in HttpContext.Cache)
    {
        sb.AppendFormat("{0} : {1}<br />", item.Key, item.Value.ToString());
    }

    ViewData.Add("CacheContents", sb.ToString());

HttpContext.Cache - это место, где счетчик всегда равен нулю, даже если кэш работает нормально.

Ответы [ 2 ]

0 голосов
/ 15 января 2011

Вместо использования HttpCache я в итоге развернул свою собственную модель кэширования для хранения наборов данных на уровне доступа к данным. Если я искал профиль AD с данным именем пользователя и преобразовывал его в DTO, то я просто помещал этот профиль в скользящую коллекцию DTO профиля, которую я проверял бы перед опросом AD для получения информации.

0 голосов
/ 13 апреля 2010

Вероятно, это связано с тем, что страница кэшировалась вниз по потоку в клиентском браузере, а не на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...