Значки: использовать Data-URI или встроенные шрифты?

У меня есть набор из 10 монотонных иконок размером 25x25 или меньше. Который имеет лучшую производительность:

1) Вставить их в CSS с URI данных

2) Загрузите их как шрифт ( IcoMoon и т. Д.)

Загрузка в виде шрифта может показаться менее выгодной, поскольку она выполняет вызов http: если я... 2b) Встраивать файлы шрифтов самостоятельно.

В прошлом месяце я использовал IcoMoon для этого проекта, но это немного утомительно, если мне нужно внести изменения в SVG и повторно загрузить в приложение. CSS также немного запутан, когда имеешь дело со шрифтами и изображениями. Кажется, я мог бы сэкономить головную боль с помощью base64-кодирования SVG и покончить с этим.

Так что бы вы сказали, это лучший способ? Или альтернатива этим? Я оптимизирую для Webkit, Mozilla и IE8+.

1 ответ

Решение

Это зависит ™.

Кажется, что URI данных медленнее на мобильных устройствах, но значки менее 1 КБ могут иметь лучшую производительность при внедрении. Это также зависит от того, как часто изображения используются для каждой страницы - очевидно, что URI данных необходимо распаковывать при каждом использовании, поэтому, если вы используете их много раз на странице, это может повлиять на производительность.

К сожалению, похоже, что никто еще не сравнивал URI данных и шрифты значков @font-face для производительности мобильных устройств. В идеале, проведите некоторое реальное RUM-тестирование и опубликуйте свои результаты ^_^ Если вы это сделаете, пожалуйста, проверьте также встраивание шрифта иконки в CSS как URI данных в кодировке Base64:D

Наконец, есть несколько плагинов Grunt, которые могут автоматизировать рабочий процесс для вас, и используя [data-icon]-стиль встраивания для значка шрифта уменьшает CSS беспорядок (attr() поддерживается в IE8+).

PS Извините за тур, я тоже хочу эту информацию…

Другие вопросы по тегам