Если изображение имеет семантическое значение , поэтому оно считается содержимым, используйте тег IMG , без спрайтов и правильно настроенный ALT.
Когда изображение является просто украшением , например фон окна, фон кнопки, фон пункта меню и т. Д., Оно не имеет семантического значения, поэтому вы можете просто используйте его как фон SPAN, DIV и т. д. из CSS. В этом случае вы можете использовать спрайты.
Причина, по которой Image Sprite является наилучшей практикой, заключается в том, как работает HTTP-протокол , и потому, что мы хотим минимизировать время, необходимое для загрузки веб-страницы (есть много причин почему вы хотите, чтобы ваш сайт загружался быстрее, одна из них заключается в том, что Google недавно включил скорость сайта в свой алгоритм ранжирования ) HTTP - это протокол без установления соединения, это означает, что для каждого запроса браузер устанавливает новое соединение должно быть сделано, и маршрут к серверу должен быть пересчитан. Таким образом, если каждое изображение было в одном файле, браузер сохраняет несколько запросов.
Каждый запрос браузера делится на этапы: поиск DNS, подключение, отправка, ожидание, получение. Мы можем использовать firebug , чтобы увидеть все запросы, выполненные во время загрузки веб-страницы.
![enter image description here](https://i.stack.imgur.com/cFlyA.png)
Я взял тему WordPress и измерил время, затрачиваемое на каждый ресурс изображения на каждом шаге (хорошо, это сделал Firebug, а не я) и рассчитал, что 38,8% времени соответствует задержке (в данном случае задержка = поиск DNS + подключение + отправка), в то время как только 14,4% соответствует загрузке данных (оставшиеся 46,7% соответствуют ожиданию ответа сервера). Время задержки должно быть сведено к минимуму, поскольку не нужно тратить время на фактическую загрузку ресурсов, которые должен показывать браузер.
Этапы поиска, подключения и отправки DNS избыточны для каждого запроса статического изображения на одном и том же сервере. Итак, как мы можем их отрезать? Угадай, что? Использование изображений спрайтов! Каждый запрос изображения будет сгруппирован только в один, в результате чего только один набор времени ожидания для всех килобайт изображений, которые браузер собирается загрузить.