Spring Data Rest - 缓存

6
如何在Spring Data Rest中启用缓存?
其背后的逻辑是,在应用程序启动后,存储库列表和搜索方法不会发生更改。此外,如果仅通过REST API更改REST API后面的数据,则确实存在启用缓存的情况。
我相信REST API框架中会发生某种程度的缓存,并且最好在最终响应阶段即JSON响应(以避免将对象编组为JSON的开销)时进行缓存。
有什么想法或者评论吗?
1个回答

5
在仓库级别上实现这一点最简单的方法是使用Spring的@Cacheable,可以在Spring Data JPA示例项目中看到。另一个选择是利用HTTP缓存,例如Apache HTTPD设置或Varnish。

1
我同意仓库缓存的做法。但是,如果应用程序通过某些触发器(内部或外部)刷新其缓存,并且我们无法控制使HTTP缓存失效的情况下,打开HTTP缓存会让我有点担心。 - Stackee007
我在Spring Data REST文档的代码片段中看到了"ETags"头信息。不确定它是数据REST API的特性还是REST Shell的特性。无论哪种情况,有什么指针可以帮助理解实现吗? - Stackee007
回复:HTTP缓存 - 如何设置缓存完全取决于您的域,但是确实需要仔细思考和适当设置。这里没有现成的建议。 回复:ETags - 它们通常由Servlet过滤器或HandlerInterceptor实现。一个快速的OOTB解决方案是ShallowEtagHeaderFilter,但它仍然需要调用后端逻辑,因为它只比较要呈现内容的哈希值。 - Oliver Drotbohm
谢谢@Oliver。想知道是否可以在rest API中引入一个功能来挂接handlerInterceptor,从而在内容呈现之前执行类似于ShallowEtagHeaderFilter的逻辑,同时仍然遵守jackson渲染内容的设置。除了hashcode()函数检查以外,这可能还需要更多的处理。这样会更高效一些,我认为。你有什么想法? - Stackee007
1
似乎链接已失效,应该现在指向https://github.com/spring-projects/spring-data-examples。 - ILya Cyclone
修复了损坏的链接。 - aboger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接