最近几周我一直在使用 asp.net web api 并取得了巨大的成功。它确实帮助我为移动客户端生成了一个界面,以通过 http 进行编程。
我到了需要帮助的地步。
我有一个新的端点,它可以是一个数据库并可以返回 100K 的结果。我正在使用 OData 过滤数据并返回一组分页数据。
由于这可能发生在多个请求中,因此我担心性能。每次从数据库中返回 100K 记录并不理想。所以我有一些想法。
第一个是缓存 100K 结果并让 OData 每次都在这方面发挥作用。我正在使用 AppFabric 分布式缓存作为其负载平衡环境。然而,在 AppFabric 中缓存如此多的数据可能会导致内存复杂化,所以我认为我最好避免这种情况。
下一个选项是忘记 OData 的魔力,将我使用的过滤器发送到数据库,每次只返回所需的数据。所以换句话说,每次都击中数据库。
我可以考虑使用类似本文中概述的版本的缓存处理程序来缓存在 http 缓存中 -> http://byterot.blogspot.ie/2012/06/aspnet-web-api-caching-handler.html缺点其中,如果数据通过可能的另一个系统进行更新,则缓存的数据不会过期。
关于如何处理这种情况、大量数据、使用 odata 和 web api 过滤的任何其他提示?