0

Есть ли способ загрузить изображения с S3 в браузер только в том случае, если они были изменены, отправив If-Modified-Since header?Сохраненное изображение S3 с заголовком If-Modified-Since не работает

Он должен быть включен по умолчанию в браузерах и S3, но проверяет, что изображения загружаются при каждом обновлении.

ответ

3

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, чтобы перезагрузить его дважды. Результат был:

Network tab screenshot

Как вы можете видеть, первая загрузка была с 200 статусом, другие запросы, полученные 304.

+0

Спасибо за ответ. На самом деле, я прочитал всю эту информацию о первом google, но я не смог найти руководство по внедрению. Я обслуживаю html для браузера с php/apache, и у меня есть теги изображений в html с пути src, ведущим к сохраненным изображениям S3, поэтому я не собираю заголовки запросов, которые браузер делает для S3. Как я могу включить их? Или, если они включены по умолчанию, то что мне нужно включить на стороне S3 (метаданные изображений и т. Д.)? – Kainax

+0

Он должен работать по умолчанию с обеих сторон (клиент и сервер). Я отредактировал комментарий, чтобы показать скриншот того, что вы должны увидеть, и описание того, как реплицироваться. Какой симптом вы видите, что заставляет вас думать, что это не * возвращение 304? –

+0

Если бы еще одна мысль - как указано в редакции, браузер все равно выдает запрос на s3 с заголовком If-Modified-Since. Просто S3 ответит 304 без содержания, и браузер будет использовать локальную копию. Если вы действительно хотите, чтобы браузер не отправлял никаких сообщений на S3 вообще, вам нужно добавить настраиваемый заголовок для каждого объекта в S3 - –

 Смежные вопросы

  • Нет связанных вопросов^_^