Вы можете добавить представление ETag
для каждого изображения, а затем сравнить его с заголовком If-None-Match
для входящих запросов (см. " Почему в моем браузер"). Это избыточно при использовании предпочтительного заголовка Last-Modified
, и это в любом случае просто еще один способ сказать 304. (Я думаю, что GAE делает это автоматически для статических файлов, хотя не уверен.)
Gravatar устанавливает очень старые Last-Modified
даты - по умолчанию, кажется, «ср, 11 января 1984 г. 08:00:00 по Гринвичу». По истечении 5 минут браузеры часто проверяют наличие обновленных изображений. Другими словами, я думаю, что они приглашают 304, не пытаясь убедить браузеры просто использовать локальный кеш. Их заголовки выглядят так:
Date: Sat, 20 Mar 2010 07:52:43 GMT
Last-Modified: Wed, 11 Jan 1984 08:00:00 GMT
Expires: Sat, 20 Mar 2010 07:57:43 GMT
Cache-Control: max-age=300
Большая разница заключается в сроке истечения - вы хотите два дня, они хотят пять минут. Поэтому, если вы хотите, чтобы браузеры просто использовали кэшированное изображение в течение 48 часов, делайте то, что вы делаете, только установите Cache-Control: max-age=172800
(86400 - это 24 часа).