【问题标题】:Caching REST API (JAX-RS)缓存 REST API (JAX-RS)
【发布时间】:2015-04-25 19:29:15
【问题描述】:

我想提高我的 REST API 的性能,我一直在阅读有关 HTTP 缓存的内容,但我认为这并不理解这个概念。如果我有这个资源:

    @GET
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response test() {
        Car car = new Car();
        car.setName("Just a car");

        CacheControl cc = new CacheControl();
        cc.setMaxAge(86400);

        Response.ResponseBuilder builder = Response.ok(car);
        builder.cacheControl(cc);
        return builder.build();
    }

这到底是什么意思?这是否意味着在达到最大年龄之前不会再次执行请愿书?还是我必须在客户端手动处理 Cache-Control 标头?我很困惑,请帮助我理解它。

谢谢。

【问题讨论】:

    标签: java rest http caching


    【解决方案1】:

    你也可以试试这个apijcabi

    您不必实现任何缓存逻辑,只需注释即可发挥作用,您可以在任何级别使用它,例如控制器、服务或 dao。

    【讨论】:

    • 谢谢!这似乎是一种非常干净的方式。
    【解决方案2】:

    提高 REST api 响应时间的性能:

    1. 如果 api 被多个不同的客户端使用,缓存控制将无济于事。而是使用缓存框架来实际缓存要发送的响应。比如说使用内存缓存或内存缓存或文件缓存。

    2. 如果想要提高性能,使得一个客户端不需要再次访问 api 以避免网络调用。然后缓存控制标头在客户端与 httpCaching 一起使用。 CDN 还用于缓存目的,卸载服务器以获取请求。

    【讨论】:

    • 我打算用 Ehcache 进行测试。你的东西是一个不错的选择吗?你会推荐我任何其他内存缓存框架吗?
    • ehcache 当你有一台服务器时很好。并且它的好处是数据可以在 jvm 本身中,因此检索速度很快。在分布式环境下,ehcache帮不上什么忙,那么memcache是​​最好用的。
    • 然后,我将使用ehcache,因为我只有一台服务器,不值得使用基于服务器的缓存框架。非常感谢。
    猜你喜欢
    • 2016-12-18
    • 2012-06-29
    • 2017-11-12
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多