Я использую кэширование вывода в моем собственном обработчике HTTP следующим образом:
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 на сервере?