Мучения со стандартным подходом применения CSS спрайтов, а именно трудности модернизации и в некоторых случаях сложности оптимальной компоновки заставили искать альтернативный вариант оптимизации загрузки изображений. Очередной раз почитывая хабра-статьи, наткнулся на интересный подход реализации спрайтов с применением data:URI
. В ходе дискуссий и умозаключений были определены слабые и сильные стороны данного подхода. Одним из значительных недостатков нового подхода является сложность сборки конечного CSS. Однако, при использовании data:URI
имеет место возможность автоматизации процесса. Соответственно, было принято решение создать программное обеспечение для автоматической сборки data:URI
спрайтов.
Новый подход генерации CSS спрайтов на основе data:URI
решили назвать Data URI Sprites — DURIS.ru. Название немного необычное — но зато уникальное и запоминается хорошо. Как выяснилось позже когда-то давно жил вазописец по имени Дурис.
В первую очередь это полностью автоматический анализ и сборка CSS спрайтов на основе data:URI
.
Некоторые характеристики работы DURIS:
style
) и внешних (link
) стилейdata:URI
спрайтов для всех браузеров и отдельно для ИЕ6, ИЕ7 Vista (более детально в FAQ duris.ru/faq/)Современный подход создания CSS спрайтов
В ходе разработки реализации data:URI
спрайтов были проанализированы наиболее часто встречающие варианты CSS правил. Также был учтен всеми любимый браузер ИЕ. Кому еще не известно ИЕ не поддерживает до версии 8 технологию data:URI
. Однако, для него существует альтернативный вариант реализации спрайтов — на основе MHTML-технологии. Т.е., другими словами, на данный момент мы имеем полный спектр решений для всех современных браузеров (99% процентов всех используемых браузеров). Но как всегда ложку дегтя подкидывает Microsoft. Во время тестирования найдена бага MHTML-технологии в Vista ИЕ7 — а именно браузер ИЕ7 в ОС Vista при кэшировании MHTML файла отказывается показывать изображения (связано с мало документированными проблемами безопасности пр использовании MHTML в Vista ИЕ7). Если сделать файл не кэшируемым, то все работает как и должно работать, но в случае с кэшированием фоновые изображения не отображаются. В общем, Microsoft все же сделал так чтобы «цепь разорвалась» (http://habrahabr.ru/blogs/crazy_books/44492/). Другими словами, на текущий момент для браузера ИЕ7 в ОС Vista реализация DURIS работает не совсем так, как задумывалось изначально. В подключение стилей внедрен алгоритм проверки ИЕ7 Vista и в случае такового фоновые картинки подключаются стандартным путем. Статистика показывает, что пользователей, которые используют ИЕ7 под Vista около 5% процентов. В любом случае, мы уже знаем, что в ИЕ8 будет нормально реализована data:URI
технология. Хотя, честно говоря есть большие сомнения что разработчики ИЕ опять чего-то не того напрограмируют.
Выделим два наиболее важных достоинства использования современного подхода генерации CSS спрайтов:
На сегодняшний день мы имеем стабильную бета версию DURIS, которая отрабатывает все «скармиваемые» ей CSS файлы. Отрабатываются также специфические правила такие как filter:AlphaImageLoader, !important. Уверен, что есть еще неучтенные моменты/случаи, которые, надеюсь, с помощью уважаемого сообщества читателей мы совместно определим. Все что требуется — это проверить свой/любой сайт и посмотреть что получается в результате. Определить имеются ли ошибки обработки? Удовлетворяет ли результат? А может есть идея по улучшению методики/алгоритма?
Ядро DURIS разработано на языке Java и является самодостаточным (т.е. не зависит от сайта). Предполагается, что после получения релиз-кандидата исходный код ядра будет выложен в открытый доступ под OpenSource лицензией. Ядро работает с командной строки наподобии того, как работает YUICompressor. Это позволит удобно интегрировать автоматическую генерацию CSS спрайтов в свои проекты. Кто программирует на Java, при желании, сможет напрямую вызывать методы ядра DURIS.
Разработанный метод/алгоритм автоматической генерации CSS спрайтов основе data:URI
уникален в своем роде и не имеет мировых аналогов. Это еще раз доказывает что славянский народ тоже умеет изобретать инновации, а не только хорошие/плохие велосипеды.
На сайте выложен FAQ, в котором детально расписано что и как работает. Если что не понятно описано — задаем вопросы в комментариях.
В главных ролях Руслан Синицкий (aka sirus), Николай Мациевский (aka sunnybear)
data:URL
data:URI
, или Microsoft и весь остальной мирcanvas
и PNG-картинок