openrasta中的服务器端缓存

Nei*_*afi 5 caching openrasta

我有一个网站被轮询相当难以从多个客户端(浏览器,其他应用程序,unix shell脚本,python脚本等)的相同资源的JSON表示.

我想添加一些缓存,以便将一些资源缓存在服务器中一段可配置的时间,以避免CPU处理请求并将资源序列化为JSON.我当然可以在处理程序中自己缓存它们,但是然后会对每个请求进行序列化命中,并且还必须修改处理程序的负载.

我看过openrasta-caching模块,但认为这只是用于控制浏览器缓存?
因此,在编解码器生成后,有关如何让openrasta缓存资源的呈现表示的任何建议?

谢谢

Ser*_*Seb 1

openrasta-caching 确实对服务器端缓存提供了初步支持,您可以使用 ServerCaching 属性将 API 映射到 asp.net 服务器端缓存。也就是说,它并不完整,openrasta 缓存也不是完整的。这是一个 0.2 版本,需要几天的工作才能使其成为一个好的 v1,完全支持我想要支持的所有场景,但 ASP.NET 缓存基础设施当前不支持(主要是使 OpenRasta 中的缓存工作)完全像一个 http 中介,而不是像 asp.net 领域中存在的一个对象和以 .net 为中心的中介,包括在您希望允许客户端强制服务器重做查询时对服务器缓存的客户端控制)。由于我目前没有致力于缓存的客户端项目,因此很难证明对该插件进行任何进一步的工作是合理的,因此我现在没有为其编写任何代码。不过,我确实有 4 天的免费时间,所以如果您希望将 openrasta 缓存提高到 0.3,无论您有什么要求,都可以满足 4 天的工作,请私信我。

您可以使用 IOperationInterceptor 实现更简单的东西,并使用它插入 asp.net 管道,或者对 Web 更友好,使用鱿鱼实现进程外缓存,并依赖 openrasta-caching 生成正确的 http 缓存指令。

也就是说,对于您的问题,如果成本采用 json 格式,您甚至可能不需要服务器缓存。如果您将上次修改的内容或 Etag 映射到处理程序返回的内容,它会在304适当的情况下正确生成 ,并完全绕过 json 渲染,前提是您的客户端执行条件请求(并且应该如此)。

还有一个建议的 API,允许您通过对上次修改/etag 执行第一次查询来返回 304 而不检索任何数据,从而进一步优化您的 API。