设置Jersey以允许缓存?

时间:2010-02-16 01:55:31

标签: rest jersey resteasy

我从Jersey @GET方法返回以下内容。它工作正常,但总是包含No-cache标头。我想允许客户端缓存这些数据,因为它几乎没有变化。

ResponseBuilder rb = Response.ok(c);
    CacheControl cc = new CacheControl();
    cc.setMaxAge(60);
    cc.setNoCache(false);
    return rb.cacheControl(cc).build();

响应总是:

 Server Apache-Coyote/1.1
 Pragma No-cache
 Cache-Control  no-cache, no-transform, max-age=60
 Expires    Wed, 31 Dec 1969 19:00:00 EST
 Content-Type   application/xml
 Content-Length 291
 Date   Tue, 16 Feb 2010 01:54:02 GMT

我在这里做错了吗?

2 个答案:

答案 0 :(得分:5)

这是由于打开了BASIC身份验证造成的。

在上下文中指定此项将更正此问题:

<Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
       disableProxyCaching="false" />

希望这有助于其他人。

答案 1 :(得分:0)

您的代码看起来没问题。

您使用的是哪个容器?确保未禁用缓存。还要验证下游响应处理程序或过滤器没有设置no-cache指令。