Amazon S3 уже содержит заголовок If-Modified-Since
, а также соответствующий If-None-Match
(в котором вместо даты используется ETag).
Таким образом, для загрузки изображений только в том случае, если они были изменены, фактически использовать If-Modified-Since
или If-None-Match
, если у вас есть Etag. Однако, поскольку вы говорите о загрузке его в браузер, большинство браузеров уже будут делать это, если вы не сделали что-то напуганное, чтобы отключить кеширование браузера.
См. http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html#RESTObjectGET-requests-request-headers для получения подробной информации о поддерживаемых заголовках.
Возникла ли ситуация, когда браузер по-прежнему загружает изображения с S3, даже если они не были изменены? Если да, у вас есть более подробная информация об этом, например. браузер, версия и что-то вроде Chrome network tab HAR file, иллюстрирующих симптомы?
По умолчанию он должен работать только с обеих сторон без каких-либо изменений. Я просто реплицируюсь, загружая свежий файл PNG-изображения на S3. В новом окне браузера я открыл инструменты разработчика и загрузил вкладку сети. Я убедился, что «отключить кеширование» было UNticked, и «сохранить журнал» был отмечен галочкой (чтобы сохранить журнал в нескольких обновлениях F5).
Я загрузил изображение, а затем ударил F5, чтобы перезагрузить его дважды. Результат был:
Как вы можете видеть, первая загрузка была с 200 статусом, другие запросы, полученные 304.
Спасибо за ответ. На самом деле, я прочитал всю эту информацию о первом google, но я не смог найти руководство по внедрению. Я обслуживаю html для браузера с php/apache, и у меня есть теги изображений в html с пути src, ведущим к сохраненным изображениям S3, поэтому я не собираю заголовки запросов, которые браузер делает для S3. Как я могу включить их? Или, если они включены по умолчанию, то что мне нужно включить на стороне S3 (метаданные изображений и т. Д.)? – Kainax
Он должен работать по умолчанию с обеих сторон (клиент и сервер). Я отредактировал комментарий, чтобы показать скриншот того, что вы должны увидеть, и описание того, как реплицироваться. Какой симптом вы видите, что заставляет вас думать, что это не * возвращение 304? –
Если бы еще одна мысль - как указано в редакции, браузер все равно выдает запрос на s3 с заголовком If-Modified-Since. Просто S3 ответит 304 без содержания, и браузер будет использовать локальную копию. Если вы действительно хотите, чтобы браузер не отправлял никаких сообщений на S3 вообще, вам нужно добавить настраиваемый заголовок для каждого объекта в S3 - –