C# 输出缓存过期导致WebApi请求突然增加(MVC5/webapi2)

C# 输出缓存过期导致WebApi请求突然增加(MVC5/webapi2),c#,.net,asp.net-mvc,performance,caching,C#,.net,Asp.net Mvc,Performance,Caching,我正在使用MVC5为页面提供服务,并从WebApi服务获取数据。MVC5应用程序向WebApi初始页面加载发出大约60个请求以获取所有数据,我在MVC5端使用OutputCache 这将一直工作到缓存过期。当输出缓存过期时,会触发对API的新调用,因为有很多人使用该站点,所以在发出后续请求之前,第一个请求不会完成。这意味着我们的数据服务突然不得不应付巨大的负载。假设有100个新访问者进入,那么后端会收到大约6000个请求,其中大多数包括数据库调用和一些对其他服务的请求。响应时间越来越长,最终We

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

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


我有没有什么方法可以应付突然增加的请求?我已经考虑在WebApi端添加另一层缓存,但想知道是否还有更多的工作要做。

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

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


如果您想了解更多有关此主题的信息,s和StackExchange的一位开发人员很自豪地与大家分享他们如何实现缓存(一级缓存和二级缓存)。

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

也许这可以帮助一些人: