Os cabeçalhos HTTP relacionados ao cache são substituídos na resposta Servlet no App Engine

Eu tenho um servlet no App Engine que serve imagens.

O servlet define os valores do cabeçalho HTTP corretamente para indicar que as imagens devem ser armazenadas em cache. Mas o App Engine substitui esses cabeçalhos, o que resulta em imagens não armazenadas em cache.

Note que o mesmo código funcionou antes, mas não funciona há algum tempo.

A documentação do mecanismo de aplicativos informa que, seCache-Control, Expires eVary cabeçalhos são definidos pelo servlet, eles serão deixados sem modificações:https://developers.google.com/appengine/docs/java/runtime#Responses

Este é o meu código de amostra:

response.setContentType( "image/jpeg" );
//response.setDateHeader( "Expires", new Date().getTime() + 60L*24*60*60*1000 ); // 60 days cache time
//response.addHeader( "Cache-Control", "public, max-age=5184000" ); // 5_184_000 sec = 60 days cache time
response.addHeader( "Cache-Control", "public, max-age=90000" ); // 90_000 sec = 25 hours cache time
response.getOutputStream().write( data ); // Data is a byte array containing the JPEG image data

(Eu tentei colocar tudo isso é comentado.)

Examinando a solicitação-resposta HTTP, a resposta contém os seguintes cabeçalhos:

HTTP/1.1 200 OK
status: 200 OK
version: HTTP/1.1
cache-control: public, max-age=90000
cache-control: no-cache, must-revalidate
content-length: 6777
content-type: image/jpeg
date: Sat, 05 Jan 2013 14:11:47 GMT
expires: Fri, 01 Jan 1990 00:00:00 GMT
pragma: no-cache
server: Google Frontend

Como você pode ver, o App Engine inserecache-control, expires epragma cabeçalhos desativando o armazenamento em cache. Note que isto é devido ao pedido tem umcookie cabeçalho. Mas também a documentação emhttps://developers.google.com/appengine/docs/java/runtime#Responses afirma que, nesse caso (quando o cookie é definido), o mecanismo de aplicativos configurará o armazenamento em cache para ser privado, para que os navegadores ainda possam armazená-lo em cache, mas não em servidores proxy intermediários. Os cookies não são adicionados nem por mim, mas pelo código do Google Analytics (ativei o Google Analytics na página).

O que estou fazendo de errado? Como posso obter o armazenamento em cache adequado da resposta do servlet?

EDITAR: Outras investigações mostraram que os cookies são adicionados a solicitações porque eu uso a Autenticação do Google e, se um usuário estiver logado usando a conta do Google, os cookies relacionados ao usuário são adicionados, compreensivelmente. Se nenhum usuário estiver logado, o cache não será substituído. Portanto, minha outra pergunta é: existe uma maneira de armazenar em cache imagens servidas por servlet quando o usuário está logado com uma conta do Google?

EDITAR, SOLUÇÃO: O Google App Engine só desativa o armazenamento em cache se um usuário administrador do aplicativo for o cliente. Nesse caso, o App Engine insere cabeçalhos destinados apenas ao administrador, por exemplo, o custo estimado da solicitação. Esta é uma informação privada, portanto é compreensível que o armazenamento em cache esteja desativado.

questionAnswers(1)

yourAnswerToTheQuestion