Я не уверен, как лучше подойти к этому, но вот мой сценарий.
Допустим, у меня есть обработчик ashx, который передает некоторые данные в запрос ajax от клиента. Что-то простое вроде:
public class Handler : IHttpHandler
{
private List<MyObject> data;
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
data = GetData();
string result;
switch (context.Request.QueryString["requestType"])
{
case "case":
result = Foo.Bar(data).GetJSON();
break;
// .. several more data conversitions / comparisions
}
context.Response.Write(result);
}
public class MyObject
{
public int Id { get; set; }
public string Data { get; set; }
}
}
Как мне кэшировать список MyObject, чтобы он не перестраивался каждый раз, когда делается запрос к службе? Допустим, список MyObject получает тысячи результатов, и я хочу сохранить его в кэше в течение ~ 1 минуты. Могу ли я использовать context.Cache?
В основном; Я не хочу кэшировать вывод обработчиков. Просто объект с данными, которые находятся в нем.
Изменить: я ищу что-то вроде:
data = (List<MyObject>) context.Cache["data"];
if (data == null || !data.Any())
{
data = GetData();
context.Cache.Insert("data", data, null, DateTime.Now.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration);
}