Настройка Джерси, чтобы разрешить кэширование? - PullRequest
3 голосов
/ 16 февраля 2010

Я получил следующее возвращенное из метода Джерси @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 ]

5 голосов
/ 24 февраля 2010

Это было вызвано включением BASIC-аутентификации.

Указание этого в контексте исправит проблему:

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

Надеюсь, это поможет кому-то еще.

0 голосов
/ 16 февраля 2010

Ваш код выглядит хорошо.

Какой контейнер вы используете? Убедитесь, что кеш не отключен на нем. Также убедитесь, что нижестоящие обработчики ответов или фильтры не задают директиву no-cache.

...