0

是否可以将来自 WEB API 的响应拆分为如下块。

我有一个可以一次处理 100 KB 数据的 win forms 应用程序。

当此客户端向我的 ASP.NET WEB API 请求某些数据时,我们假设 WEB API 响应为 2 MB……我可以以某种方式缓存此响应,将其拆分为 100KB 块并将第一个块返回给我的应用程序。该响应将包含指向下一个块的链接/令牌等等?这听起来很疯狂吗?这可行吗?

还有一个问题:当我们谈论请求/响应内容长度(大小)时,这意味着什么:内容本身不能大于 100 KB 或带有标题的内容等等......我想知道标题是否是否包含在内容长度中?

示例:如果我的响应是 99KB 并且标头是 10 KB (109 KB),如果限制是 100KB,这是否会通过?

4

1 回答 1

1

分页是 Web 服务中大型数据集的一种非常常见的解决方案。例如,Facebook 会在 API 结果超过一定行数时对其进行分页。您在本地缓存完整结果的想法是一个很好的优化,但如果您不确定是否将其作为最终解决方案,您可能不会将其作为第一个实现进行缓存。

如果不进行缓存,您只需将页码和总页数传递回您的客户端,然后它就可以为下一组记住特定的页码重新进行调用。这使得客户端上的循环变得简单,并且您的数据访问层稍微复杂一些,因为它只会根据页面参数重新序列化某些行号,但这仍然应该非常简单。

Web API 可以访问与HttpRuntime.Cache其他 ASP.NET 项目类型相同的对象,因此编写数据访问调用的包装器并将较大查询的结果粘贴到该缓存中应该很容易。使用令牌作为缓存中该值的键,并将键(可能是GUID类的实例)传递回具有当前页码的客户端。在随后的调用中,跳过访问您的正常持久性方法(数据库、文件等),而是访问 中的GUIDHttpRuntime.Cache并找到适当的行。一个问题是,如果您有多个 Web 服务器托管您的服务,因为HttpRuntime.Cache它们仅存在于进行第一次调用的机器上,因此除非您的负载均衡器具有 IP 亲和性或您有分布式缓存层,否则这将更难以实现.

于 2013-08-21T18:50:13.117 回答