【问题标题】:Spring Data Rest - CachingSpring Data Rest - 缓存
【发布时间】:2013-08-24 02:31:30
【问题描述】:

如何使用 Spring Data Rest 启用缓存?

背后的原因是,一旦应用程序启动,存储库列表和搜索方法就不会改变。此外,如果仅通过 REST API 更改 REST API 背后的数据,它也确实有理由启用缓存数据。

我相信 REST API 框架中会发生某种程度的缓存,如果缓存发生在最终响应阶段,即 json 响应(以避免将对象编组到 json 的开销),那将是理想的选择

想法/cmets?

【问题讨论】:

    标签: caching spring-data spring-data-rest spring-hateoas


    【解决方案1】:

    在存储库级别实现此功能的最简单方法是使用 Spring 的 @Cacheable,如 Spring Data JPA Examples project 所示。

    另一种选择是利用 HTTP 缓存,例如使用 Apache HTTPD 设置或 Varnish。

    【讨论】:

    • 我同意的存储库缓存。但是,我有点担心在应用程序通过某些触发器(内部或外部)刷新它的缓存并且我们无法控制使 http 缓存无效的情况下打开 http 缓存。
    • 我在 spring data rest 文档的代码 sn-ps 中看到了标题“ETags”。不确定它是 data rest api 的功能还是 rest shell 的功能。在这两种情况下,有任何了解实现的指针吗?
    • 回复:HTTP 缓存 - 如何设置缓存完全由您的域驱动,但是是的,它需要仔细思考和正确设置。这里没有货架建议。回复:ETags - 它们通常由 Servlet 过滤器或 HandlerInterceptor 实现。一个快速的 OOTB 解决方案是 ShallowEtagHeaderFilter,但它仍然需要调用后端逻辑,因为它只比较要呈现的内容的哈希值。
    • 谢谢@Oliver。想知道rest API中是否有一个功能可以挂钩handlerInterceptor,它会执行与ShallowEtagHeaderFilter类似的逻辑,但在呈现内容之前并在呈现内容时仍然尊重杰克逊设置。超过hashcode() 功能检查考虑杰克逊设置。我认为这可能会更有效率。想法?
    • 看起来链接已损坏,现在应该指向github.com/spring-projects/spring-data-examples
    猜你喜欢
    • 2017-02-11
    • 2017-11-22
    • 2016-10-26
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多