Tkreks
@Tkreks
Системный инженер

Как отдать браузеру 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 и сравнить картинки между собой.
Понятно что это ресурсоемко.
Про замену ссылок у одинаковых картинок - не вариант.
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Одну и ту же картинку браузер качает один раз, ложит в локальный кэш (если он не выключен), и показывает во всех местах. Качать одно и то же 10 раз - дурных нема. Браузеры придумывали во времена, когда каждый килобайт трафика стоил денежек...

Исправьте отдачу одной картинки под разными URL-ами, и всё. Или замените отдачу на редирект на единственно правильную картинку.
Ответ написан
NeiroNx
@NeiroNx
Программист
Можно попробовать 307 код ответа напраляющие одинаковые URL картинки.

Тоесть SRC в тегах разный, но при его запросе идет 307 и направление на один и тот же URL, который закэшируется и повторно не скачается, так как он уже одинаковый.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы