输出缓存过期导致Web Api请求突然增加(MVC5 / web api 2)

时间:2014-09-05 11:06:31

标签: c# .net asp.net-mvc performance caching

我使用MVC5提供页面并从WebApi服务获取数据。 MVC5应用程序向WebApi初始页面加载发出约60个请求以获取所有数据,我在MVC5端使用OutputCache。

这将一直有效,直到缓存过期。当输出缓存过期时,会触发对API的新调用,因为很多人在使用该站点时,第一个请求在后续请求完成之前不会完成。这意味着突然我们的数据服务必须应对巨大的负载。假设有100个新访问者进入,那么后端会收到大约6000个请求,其中大多数包括数据库调用和一些其他服务请求。响应时间变长,最终WebApi层崩溃。

我是否有任何方法可以应对突然增加的请求?我考虑在WebApi方面添加另一层缓存,但想知道是否可以做更多的事情。

2 个答案:

答案 0 :(得分:1)

这里我的两分钱将建议你,也许是时候实现二级缓存机制了。

不应将所有内容委托给ASP.NET输出缓存,而应将缓存数据放在前端和Web API后端之间的中性层中,这可以在超时和异步时更新。也就是说,用户不会受到刷新整个缓存的性能影响。

如果您想了解有关此主题的更多信息,可以通过s ome question was thrown in Meta StackExchange和StackExchange的开发人员自豪地与大家分享他们如何实现缓存(L1和L2缓存)。

答案 1 :(得分:0)

我认为滑动到期缓存可能有所帮助。但我认为你需要去第三方或为此创建自己的属性。

也许这可以帮助一些人:

Asp.net Mvc OutputCache attribute and sliding expiration