Как отдать браузеру 1 картинку и отобразить её в нескольких местах страницы?
Здравствуйте!
Такой вопрос, допустим у меня есть страница.
На этой странице есть много <img src="...">
некоторые вставки использую опцию lazy
Некоторые из них одинаковые.
Есть картинки:
/img/1.jpg
/img/2.jpg
/img/3.jpg
/img/4.jpg
В коде страницы есть 10 таких строк: <img src="/img/4.jpg">
Если я правильно понимаю, то клиент(браузер) скачает 10 раз это изображение.
Можно ли сделать так, чтобы эта картинка скачивалась 1 раз и выводилась клиенту в 10 местах?
И более сложный вопрос, предполагается что в первом случае браузер скачивает 1 картинку а не 10. если предположим у меня картинки 1,2... - одинаковые, (nginx отдает одну картинку под разными url) можно ли как то проанализировать сами картинки и объединить как в первом случае?
Например, очистить метаданные, привести к одному названию, преобразовать в base64, вычислить хэш допустим в md5 и сравнить картинки между собой.
Понятно что это ресурсоемко.
Про замену ссылок у одинаковых картинок - не вариант.
Чем больше знаю, тем лучше понимаю, как мало знаю.
Одну и ту же картинку браузер качает один раз, ложит в локальный кэш (если он не выключен), и показывает во всех местах. Качать одно и то же 10 раз - дурных нема. Браузеры придумывали во времена, когда каждый килобайт трафика стоил денежек...
Исправьте отдачу одной картинки под разными URL-ами, и всё. Или замените отдачу на редирект на единственно правильную картинку.
Спасибо что опровергли мою догадку! Я это надеялся услышать.
Не знаете, можно ли как то принудительно заставить читать определенную картинку из локального кэша ?
Я на самом деле за говнокод, т.к. сам его пложу и призываю всех использовать говнокод. Т.к. потом заказчик обратиться к такому же как я и у всех всегда будет работа. (шутка)
Второй вопрос скорее теоретический. Но я вижу варианты, при которых с использованием механизмов дедупликации получится столкнуться с такими маневрами. Поэтому интересует теоретический вопрос такой конструкции.
AUser0, Спасибо. В целом если первый вариант работает (а я что то сразу не додумался локальный кэш смотртеть и смотреть соединения браузера), я проверил - работает. То вторая часть вопроса не так критична в этом случае.
Можно попробовать 307 код ответа напраляющие одинаковые URL картинки.
Тоесть SRC в тегах разный, но при его запросе идет 307 и направление на один и тот же URL, который закэшируется и повторно не скачается, так как он уже одинаковый.
Спасибо за подсказку. Про редирект думал что он не будет кэшироваться, поэтому даже не смотрел в эту сторону. Но как в таком случае реализовать пока не понимаю. На стороне веб сервера отслеживать соединения, и по идентификатору соединения анализировать запросы на *.jpg и далее вписывать логику для редиректа?