【发布时间】:2023-03-03 16:14:01
【问题描述】:
我不确定解决此问题的最佳方法,但这是我的方案。
假设我有一个 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);
}
【问题讨论】: