Configurando a camisa para permitir o cache?
Pergunta
Eu tenho o seguinte retornado de um método de camisa @get. Funciona, bem, mas sempre inclui o cabeçalho sem cache. Eu gostaria de permitir que o cliente cache esses dados, pois raramente muda.
ResponseBuilder rb = Response.ok(c);
CacheControl cc = new CacheControl();
cc.setMaxAge(60);
cc.setNoCache(false);
return rb.cacheControl(cc).build();
A resposta é sempre:
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
Que estou fazendo errado aqui?
Solução
Isso foi causado por uma autenticação básica ligada.
Especificar isso no contexto corrigirá o problema:
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator"
disableProxyCaching="false" />
Espero que isso ajude outra pessoa a sair.
Outras dicas
Seu código parece bem.
Qual contêiner você está usando? Verifique se o cache não está desativado nele. Verifique também os manipuladores de resposta a jusante ou os filtros não estão definindo a diretiva sem cache.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow