Старый вопрос, но в ответе на самом деле не упоминалась обработка на стороне сервера.
Как и в победном ответе, я бы использовал это для client side
:
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10));
context.Response.Cache.SetMaxAge(TimeSpan.FromMinutes(10));
и для server side
, поскольку вместо веб-страницы вы используете ashx, я предполагаю, что вы непосредственно записываете вывод в Context.Response
.
В этом случае вы можете использовать что-то вроде этого (в этом случае я хочу сохранить ответ на основе параметра "q", а я использую истечение скользящего окна)
using System.Web.Caching;
public void ProcessRequest(HttpContext context)
{
string query = context.Request["q"];
if (context.Cache[query] != null)
{
//server side caching using asp.net caching
context.Response.Write(context.Cache[query]);
return;
}
string response = GetResponse(query);
context.Cache.Insert(query, response, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10));
context.Response.Write(response);
}