http заголовки для более быстрой загрузки изображения? - PullRequest
1 голос
/ 29 июня 2010

Мне нужно загрузить почти 100 изображений на одной странице моего сайта. (изображение товара, их много). Всякий раз, когда изображение изменяется для продукта, URL для этого изображения также изменяется. для одного URL соответствующий iamge никогда не меняется. Теперь я хочу убедиться, что для одного и того же человека, просматривающего веб-сайт, изображение не должно загружаться снова.

Достаточно ли хорош заголовок expire? (иногда браузер все еще пытается загрузить его при обновлении вручную)

на стороне сервера мой скрипт на python всегда возвращает 304 при изменении, так как заголовок доступен без проверки его значения, поскольку каждое изображение имеет уникальный URL. Обычно это работает хорошо, но иногда, когда изображения частично загружаются и пользователь переходит на другую страницу, пользователь видит половину загруженных изображений в следующий раз, когда он попадает на ту же страницу, что и сервер, возвращает 304. Так насколько надежно, если изменено, так как заголовок? а какие есть другие альтернативы?

Спасибо.

изменить 2:

какой должна быть длина контента для ответа 304? должен ли это быть исходный контент или фактический контент (т. е. 0) ??

1 Ответ

2 голосов
/ 29 июня 2010

При перезагрузке вручную большинство браузеров игнорируют заголовки кэширования, поэтому это нормальное и ожидаемое поведение.

Для этого достаточно заголовка Expire.

Что касается частичной загрузкиможет случиться так, что соединение TCP будет разорвано во время загрузки изображения;если вы не указали Content-Length при отправке изображения, некоторые браузеры могут предположить, что соединение было закрыто, потому что все данные были отправлены.Если указан параметр Content-Length (он же размер изображения в байтах), браузер должен заметить, когда у него нет полного изображения, и в следующий раз безоговорочно повторно его загрузить.

При отправке 304 Not Modified, не обязательно отправлять Content-Length.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...