Мы в Telegram
Добавить новость
123ru.net
Интернет
Май
2016

Как оптимизировать загрузку шрифтов на сайте

0

Автор: Николай Мациевский, технический директор Айри.рф (ускорение и защита сайтов).

Собственные шрифты позволяют сделать сайт уникальным, подчеркнуть его дизайн и привлечь внимание пользователей. Но платой за эти преимущества является долгая загрузка сайта, использующего собственные (кастомные) шрифты. Особенно, если они расположены на удаленном хостинге. Что с этим делать?

Ниже мы рассмотрим основные подходы к оптимизации шрифтов сайта: размещение на хостинге, Google API, использование техник по уменьшению размера и отложенной загрузке шрифтов.

Кратко, инструкция по оптимизации выглядит так:

  1. Собираем нужный набор шрифтов (оставляя только самое необходимое).
  2. Размещаем его на хостинге или используем Google Fonts API.
  3. Настраиваем кэширование и сжатие для файлов шрифтов.
  4. Настраиваем отложенную отрисовку и использование localStorage.

Использование шрифтов

Собственные шрифты сайта, скорее всего, отсутствуют в браузере пользователя. Поэтому необходимо указать дополнительные к загрузке файлы, в которых будет содержать техническая информация о начертании шрифтов (символы — глифы, особенности совместного начертания символов и строк и другие данные). Как это часто бывает, для каждого браузера нужен свой файл — Google Chrome понимает формат woff и woff2 (наиболее продвинутые), старый Android понимает только TTF, а IE — eot.

Дополнительно можно учесть, что в редких случаях шрифт может быть уже установлен на устройство пользователя: в этом случае можно использовать директиву local. Развернутая CSS инструкция, подключающая соответствующий шрифт на сайте, будет выглядеть примерно так (используем различные форматы для «попадания» в разные браузеры):

@font-face {
font-family: 'Awesome Font';
font-style: normal;
font-weight: 400;
src: local('Awesome Font'),
      url('/fonts/awesome.woff2') format('woff2'),
      url('/fonts/awesome.woff') format('woff'),
      url('/fonts/awesome.ttf') format('ttf'),
      url('/fonts/awesome.eot') format('eot');
}

В этом случае все файлы шрифтов размещаются на хостинге. Для поддержки всех браузеров обычно используется набор файлов шрифтов для каждого начертания (гарнитуры). Его можно создать, например, через Font Squirrel: сервис автоматически предоставит CSS-код и набор файлов для размещения на сервере.

В качестве альтернативного варианта можно использовать сервис Google Fonts: вы вставляете вызов скрипта сервиса на сайт, а в зависимости от используемого браузера сервис уже отдает соответствующий CSS-код и файлы шрифта (уже с разбиением по языкам), поддерживая более 30 разных комбинаций.

Но основную проблему с загрузкой собственных шрифтов это не решает: шрифты большие. Иногда слишком большие. И почти всегда они требуются, чтобы отобразить текст на странице (т.е. загрузка шрифта идет на стадии «белого экрана», максимально раздражая пользователей). Как это вылечить?

Google Fonts API

Первый и наиболее важный шаг в оптимизации - оставить только нужные шрифты. Инвентаризация шрифтов (удаление неиспользуемых на сайте или максимальная обрезка используемых в фактически используемых символов). Также нужно выбрать не только шрифты, но и их варианты (обычный, курсив, полужирный).

Google Fonts API позволяет загрузить только нужные варианты щрифта, а также загружает шрифты по наборам символов (позволяет браузеры не загружать полностью шрифт, если не все глифы требуются для отображения страницы). Среди дополнительных возможностей стоит отметить и параметр text={letters}, который обрезает символы в загружаемом шрифте строго до заданных (если шрифт используется только для логотипа, это может быть очень ценно).

Оптимизация размера шрифтов

Оптимизация размера шрифтов состоит из трех базовых вещей: обеспечить обратную совместимость, включить сжатие и устранить неиспользуемые глифы. Перед проведением оптимизации нужно пересмотреть набор используемых нестандартных шрифтов и оставить только те, которые реально нужны для сайта.

Обратная совместимость. Для максимального ускорения отображения текста вашего сайта на любом пользовательском устройстве вы должны сообщить браузеру, какой запасное семейство шрифтов можно использовать, если ваш собственный шрифт недоступен (не загрузился еще или загружается неподдерживаемый формат). Для этого в директиве font-face после названия вашего шрифта нужно указать наиболее подходящую системную альтернативу с обязательным окончанием serif (шрифт с засечками), sans-serif (без засечек) или monospace (равной ширины). Хотя обратная совместимость приводит к FOUT, но эта альтернативна лучше, чем невидимый на сайте текст (FOIT).

Сжатие шрифтов. Если вы используете статическое сжатие, то достаточно подготовить архивы с файлами шрифтов и разместить их рядом с файлами шрифтов. При динамическом сжатии проверьте, что все основные форматы шрифтов — EOT, TTF, OTF, SVG, WOFF и WOFF2 — отдаются с хостинга сжатыми (проверка сжатия). Если это не так, то нужно добавить требуемые расширения или типы файлов в правила сжатия. Gzip (или zopfli) сжатие позволяет сократить размер шрифтов на 15-50%.

Удаление глифов. Для отображения текста на сайте обычно требуются далеко не все символы, включенные в шрифт по умолчанию. Часть из них относится к другому языку (например, к китайскому), часть — к специальным символам, которые вы не используете. Существует большое количество инструментов для удаления из шрифтов неиспользуемых глифов и утилиты по Windows / Mac. Наиболее популярные — это сервис Font Squirrel (в режиме Advanced), а также Subset.py и FontPrep. Также Google Fonts позволяет загружать только используемые наборы символов. Этот метод оптимизации позволяет сократить результирующий файл еще на 10-50%.

В совокупности, все три метода позволяют существенно ускорить отображение сайта на всех устройствах, независимо от красоты используемых шрифтов и неплохо автоматизируются: например, в облаке Айри.рф использует второй и третий методы оптимизации, сокращая размер поступающих с хостинга шрифтов на 20-80%.

Отложенная загрузка шрифтов

Есть несколько подходов, позволяющих применить некоторую «магию» к загрузке шрифтов, чтобы до минимума снизить негативные эффекты.

Первое - это жесткое кэширование файлов (для обычных пользователей) и base64-представления (в localStorage, для мобильных пользователей). Прием работает только для вернувшихся на сайт пользователей, но для них позволяет существенно сократить время загрузки ( Детальная инструкция по использования localStorage).

Второе - использование Font Loading API (поддерживается не всеми браузерами). При первичной загрузке страницы можно показать текст в установленном у пользователя шрифте, асинхронно загрузить нужный шрифт - и потратить несколько десятков миллисекунд (почти невидимое «подвисание» браузера) на перерисовку страницы по готовности шрифта. Существуют библиотеки для автоматизации процесса, одна из них представлена здесь.

И третье - предварительная загрузка шрифтов (если они используются не с первой страницы у пользователей: например, в личном кабинете). Для этого подойдет техника prefetch, которая уже очень хорошо поддерживается браузерами: http://caniuse.com/#feat=link-rel-prefetch ).

Для более глубокого погружения в тему рекомендую к прочтению статью от Google на тему оптимизации шрифтов.






Загрузка...


Губернаторы России
Москва

Собянин рассказал, как электробусы помогают улучшать экологическую ситуацию


Спорт в России и мире
Москва

«Этот спорт воспитывает силу и упорство»: Вице-спикер Народного Хурала Бурятии приняла участие в открытии чемпионата России по гиревому спорту


Загрузка...

Все новости спорта сегодня


Новости тенниса
WTA

Александрова вышла во второй круг турнира WTA в Хертогенбосе


Загрузка...


123ru.net – это самые свежие новости из регионов и со всего мира в прямом эфире 24 часа в сутки 7 дней в неделю на всех языках мира без цензуры и предвзятости редактора. Не новости делают нас, а мы – делаем новости. Наши новости опубликованы живыми людьми в формате онлайн. Вы всегда можете добавить свои новости сиюминутно – здесь и прочитать их тут же и – сейчас в России, в Украине и в мире по темам в режиме 24/7 ежесекундно. А теперь ещё - регионы, Крым, Москва и Россия.


Загрузка...

Загрузка...

Экология в России и мире
Москва

«Москва 24»: при сборе грибов следует ориентироваться на запах и окрас, чтобы не положить в корзину несъедобные





Путин в России и мире
Москва

Владимир Путин, Дмитрий Медведев, Анатолий Голод: признание Нато надо применить!


Лукашенко в Беларуси и мире
Минск

Пашинян видит Армению в ОДКБ лишь при выходе Белоруссии или извинениях Лукашенко




123ru.netмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

123ru.net — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.





Зеленский в Украине и мире
Киев

Зеленский: США передадут Киеву новые ЗРК Patriot и «эскадрильи истребителей»


Навальный в России и мире


Здоровье в России и мире


Частные объявления в Вашем городе, в Вашем регионе и в России






Загрузка...

Загрузка...



Виктор Цой

Массовое выступление гитаристов с песней Цоя «Группа крови» планируется в Чите



Москва

Reuters: Германия не дала принять новый пакет санкций против РФ

Друзья 123ru.net


Информационные партнёры 123ru.net



Спонсоры 123ru.net