openrasta-caching 确实初步支持服务器端缓存,通过 API,您可以使用 ServerCaching 属性映射到 asp.net 服务器端缓存。也就是说,它并不完整,openrasta-caching 也不完整。这是一个 0.2,需要几天的工作才能使其成为一个好的 v1,它完全支持我想要支持的所有场景,而 asp.net 缓存基础设施目前不支持(主要是使 OpenRasta 中的缓存工作就像一个 http 中介,而不是像 asp.net 领域那样以对象和 .net 为中心的中介,包括在您希望允许客户端强制服务器重做查询的时候,客户端对服务器缓存的控制)。由于我目前没有致力于缓存的客户项目,因此很难证明对该插件的任何进一步工作是合理的,所以我现在没有为它编码任何东西。不过,我确实有 4 天的空闲时间,所以如果您希望将 openrasta-caching 提升到 0.3,并且满足 4 天工作的任何要求,请私信我。
您可以使用 IOperationInterceptor 实现更简单的东西并使用它插入 asp.net 管道,或者更加网络友好并使用 squid 实现进程外缓存并依靠 openrasta-caching 生成正确的 http 缓存指令。
也就是说,对于您的问题,如果成本是 json,您甚至可能不需要服务器缓存。如果您将最后修改或 Etag 映射到处理程序返回的内容,它将在适当的304
地方正确生成 a,并一起绕过 json 渲染,前提是您的客户端执行条件请求(并且应该这样做)。
还有一个提议的 API,允许您通过对 last modified/etag 进行第一次查询以返回 304 而不检索任何数据来进一步优化您的 API。