0

我不确定解决这个问题的最佳方法,但这是我的方案。

假设我有一个 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);
}
4

1 回答 1

1

您可以添加result到 HttpContext.Current.Cache,如下所示:

var requestType = context.Request.QueryString["requestType"];
HttpContext.Current.Cache[requestType] = result;
于 2013-01-12T20:28:07.227 回答