Я использую кэширование вывода в моем персонализированного обработчика HTTP следующим образом:Кэширование вывода в HTTP Handler и SetValidUntilExpires
public void ProcessRequest(HttpContext context)
{
TimeSpan freshness = new TimeSpan(0, 0, 0, 60);
context.Response.Cache.SetExpires(DateTime.Now.Add(freshness));
context.Response.Cache.SetMaxAge(freshness);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetValidUntilExpires(true);
...
}
Он работает, но проблема заключается в том, что обновления страницы с F5 приводит к регенерации страницы (вместо использования кеша), несмотря на последнюю кодовую линию:
context.Response.Cache.SetValidUntilExpires(true);
Любые предложения?
UPD: Похоже, причина проблемы заключается в том, что ответ обработчика HTTP не кэшируется на сервере. Следующий код работает хорошо для веб-формы, но не для обработчика:
Response.Cache.SetCacheability(HttpCacheability.Server);
Существуют некоторые особенности кэширования HTTP-ответа обработчик на сервере?
Спасибо, что нашли это решение, работали для меня с однозначными параметрами запроса. Но когда у меня есть многозначный параметр, такой как '? Id = 1 & id = 2 & id = 3', это все равно не работает. Я еще не знаю, почему, но хотел сообщить другим об этом. – Oliver