Шаг за шагом
С развитием техник data:URI наиболее логичным выходом из сложившейся ситуации будет следующий характер разработки:
Верстальщик создает рабочую версию макета сайта, не прибегая к помощи CSS Sprites (на каждый элемент – одна фоновая картинка).
Веб‑технолог внедряет кодирование картинок в base64 (+mhtml) в CSS‑файл(ы) на этапе их загрузки на боевой сайт, создавая автоматизированное решение. На этом этапе могут использоваться и CSS Sprites, однако их внедрять сложнее из‑за перерасчета позиционирования фона и обновления соответствующих стилевых правил.
Веб‑программист обеспечивает для ряда «старых» браузеров загрузку версии без использования data:URI.
Чем это хорошо? Верстальщик не думает лишний раз, что и как ему расположить и нарезать: эти операции уже включены в процесс публикации сайта, автоматизированы и максимально адаптированы под пользователей.
Чем это плохо? В общем случае, загрузка страницы не ускорится, а даже может замедлиться, потому что фоновые картинки (включенные через data:URI) будут грузиться в один поток, а не в несколько, как при обычном использовании спрайтов. Если фоновых картинок достаточно много (несколько десятков килобайтов), то это окажется существенным. При небольшом их объеме (до 10 Кб) будет заметно явное ускорение.
Как распределить загрузку фоновых картинок между предзагрузкой и пост‑загрузкой (фактически ускорив первую за счет замедления второй), рассказывается чуть ниже.
Выносим CSS‑файлы в пост‑загрузку
При использовании data:URI итоговый CSS‑файл занимает довольно большой объем (фактически равный 110‑120% от размера всех картинок и набору базовых CSS‑правил). И это в виде архива. Если файл не заархивирован, то его дополнительный размер увеличивается многократно (в 2,5–3 раза относительно размера всех фоновых изображений), но это не так существенно, ибо пользователей с отключенным сжатием для CSS‑файлов сейчас единицы (обычно доли процента).
Для решения этой проблемы, во‑первых, нам нужно разделить весь массив CSS‑правил на относящиеся к фоновым изображениям и не относящиеся. Во‑вторых, сообщить браузерам, что они могут отобразить страницу без первого массива правил (ведь если в нем содержатся только фоновые изображения, то они могут и подождать чуть‑чуть).
Фактически, используя такой подход, мы создаем другой контейнер для фоновых изображений (не ресурсное изображение, а CSS‑файл), который удобнее использовать в большинстве случаев. Мы объединяем все фоновые картинки не через CSS Sprites, а через data:URI, и можем загрузить их все одним файлом (в котором каждая картинка будет храниться полностью независимо). При этом избегаем любых проблем с позиционированием фона (все ранее заявленные проблемы с (полу)прозрачными картинками для прошлых версий IE сохраняются, однако их решение также остается прежним).
Дата добавления: 2015-05-19; просмотров: 624;