Nagłówki HTTP związane z pamięcią podręczną są zastępowane w odpowiedzi serwletu na App Engine

Mam serwlet w silniku aplikacji, który obsługuje obrazy.

Serwlet ustawia poprawnie wartości nagłówka HTTP, aby wskazać, że obrazy powinny być buforowane. Jednak App Engine zastępuje te nagłówki, co powoduje, że obrazy nie są buforowane.

Zauważ, że ten sam kod działał wcześniej, ale nie działa już od jakiegoś czasu.

Dokumentacja silnika aplikacji stwierdza, że ​​jeśliCache-Control, Expires iVary nagłówki są ustawiane przez serwlet, pozostaną niezmodyfikowane:https://developers.google.com/appengine/docs/java/runtime#Responses

To jest mój przykładowy kod:

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

(Próbowałem umieścić wszystko, co zostało skomentowane).

Badając żądanie-odpowiedź HTTP, odpowiedź zawiera następujące nagłówki:

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

Jak widać, wstawki App Enginecache-control, expires ipragma nagłówki wyłączające buforowanie. Należy pamiętać, że jest to spowodowane tym, że żądanie macookie nagłówek. Ale także dokumentacja whttps://developers.google.com/appengine/docs/java/runtime#Responses stwierdza, że ​​w tym przypadku (gdy ustawiony jest plik cookie) silnik aplikacji skonfiguruje buforowanie jako prywatne, aby przeglądarki nadal mogły go buforować, ale nie pośrednie serwery proxy. Pliki cookie nie są nawet dodawane przeze mnie, ale kod Google Analytics (włączyłem Google Analytics na stronie).

Co ja robię źle? Jak mogę uzyskać prawidłowe buforowanie odpowiedzi serwletu?

EDYTOWAĆ: Dalsze dochodzenie wykazało, że pliki cookie są dodawane do żądań, ponieważ korzystam z uwierzytelniania Google, a jeśli użytkownik jest zalogowany za pomocą swojego konta Google, zrozumiałe są pliki cookie związane z użytkownikiem. Jeśli żaden użytkownik nie jest zalogowany, buforowanie nie jest zastępowane. Więc moje dalsze pytanie brzmi: czy istnieje sposób buforowania obrazów serwletów, gdy użytkownik jest zalogowany na konto Google?

EDYCJA, ROZWIĄZANIE: Google App Engine wyłącza buforowanie tylko wtedy, gdy administratorem aplikacji jest klient. W tym przypadku App Engine automatycznie wstawia nagłówki przeznaczone tylko dla administratora, na przykład szacunkowy koszt żądania. To jest prywatna informacja, więc zrozumiałe jest, że buforowanie jest wyłączone.

questionAnswers(1)

yourAnswerToTheQuestion