4

我正在构建一个小型Web 应用程序,它本质上将用于调用外部 REST/JSON Web 服务、传递一些参数并将结果以表的形式返回给用户。

我知道来自此外部服务的数据不会经常更改(可能每天一次),并且我想防止多次调用 Web 服务以进行相同的查询。

什么是实现某种缓存的好方法?

目前我整理了一些东西(哪种方法有效,但我认为这不是正确的方法):

  1. 用户输入搜索参数

  2. 尝试 { LINQ Query 从列表中选择结果}

  3. Catch { 调用 web 服务,用结果填充列表,然后重新运行 LINQ 查询。如果仍然没有结果,则抛出异常}

我想我会在一天结束时清空列表,所以每天它都会重建。

代码有点乱,但似乎大部分时间都可以工作——有没有更好的方法来实现这一点?

4

2 回答 2

4

您可能希望使用现有的缓存类之一来为您处理过期策略,例如 System.Web.HttpContext.Current.Cache。您可以从查询参数创建缓存键,并首先在缓存中查找它。如果数据不存在,您可以调用 Web 服务并将结果添加到缓存中,绝对过期时间为 12 小时 - 如果仍然没有结果,则抛出异常。

如果您使用的是 .Net 4,那么 System.Runtime.Caching 命名空间中有一些额外的缓存选项,或者您可以查看企业库中的缓存应用程序块。

于 2013-01-05T13:03:53.037 回答
1

例如,您可能希望查看本教程中描述的内置 ASP.NET MVC 输出缓存功能。

简洁版本:

只需将[OutputCache(Duration=%duration_in_seconds%, VaryByParam="none")]属性添加到要为其缓存结果的 MVC 方法。

于 2013-01-05T13:07:36.710 回答