如何在c# / MVC中缓存web服务而不是一直调用web服务
本文关键字:web 服务 调用 一直 缓存 MVC | 更新日期: 2023-09-27 17:50:42
我正在构建一个小的 web应用程序,主要用于调用外部REST/JSON web服务,传递一些参数并将结果返回给表中的用户。
我知道来自这个外部服务的数据不会经常改变(也许一天一次),我想防止为相同的查询调用web服务很多次。
实现某种缓存的好方法是什么?
此刻,我把一些东西放在一起(这是一种工作,但我认为不是正确的方式):
-
用户输入搜索参数
-
尝试{LINQ查询从列表中选择结果}
-
Catch{调用webservice,用结果填充List,然后重新运行LINQ查询。如果仍然没有结果则抛出异常}
我想我会在一天结束时清空列表,这样每天它都会重新创建。
代码有点乱,但似乎在大多数时间工作-有更好的方法来实现这一点吗?
你可能想使用一个现有的缓存类来处理过期策略,例如System.Web.HttpContext.Current.Cache。您可以根据查询参数创建缓存键,并首先在缓存中查找它。如果数据不在那里,你可以调用web服务并将结果添加到缓存中,并设置绝对过期时间,比如12小时——如果仍然没有结果,抛出异常。
如果你使用的是。net 4,那么在System.Runtime.Caching命名空间中有一些额外的缓存选项,或者在企业库中有一个缓存应用程序块,你可以看看。
你可能想看看内置的ASP。NET MVC输出缓存功能,例如在本教程中描述的。
短版:
只需将[OutputCache(Duration=%duration_in_seconds%, VaryByParam="none")]
属性添加到MVC方法中,您想要缓存结果