Подтвердить что ты не робот

Почему Firefox повторно запрашивает шрифты при изменении размера страницы?

У меня довольно простой сайт Bootstrap3 с несколькими пользовательскими шрифтами, встроенными в CSS с правилами @font-face. Он отлично работает. Страницы создаются Django, поэтому, когда я его тестирую, я также вижу локальные запросы, которые делает браузер.

Когда я изменяю размер окна браузера, я вижу сотни запросов шрифтов:

127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_700.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_700.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_700.woff HTTP/1.1" 200 -
127.0.0.1 - - [04/Dec/2014 13:42:59] "GET /static/fonts/Source_Sans_Pro_400italic.woff HTTP/1.1" 

Все для тех же пользовательских шрифтов. Снова и снова и снова, пока я не перестану изменять размер.

Я понимаю, что большинство людей не часто меняют размер своего браузера, но почему Firefox делает это? Могу ли я остановить его?

Chrome не проявляет такого поведения.

Вот как выглядит файл с curl. Кажется, у него есть правильный Content-Type, и там нет странных супер-раскрепощенных вещей.

HTTP/1.0 200 OK
Last-Modified: Sun, 30 Nov 2014 22:53:43 GMT
Content-Length: 65452
Content-Type: application/x-font-woff
Server: Werkzeug/0.9.4 Python/2.7.4
Date: Thu, 04 Dec 2014 14:13:57 GMT
4b9b3361

Ответ 1

Я столкнулся с той же проблемой перезагрузки шрифтов в Firefox при каждом изменении размера окна браузера. Оказывается, это связано с указанием шрифтов local(), которые не были установлены локально, перед тем, как указать шрифты url().

Если я использую следующий css:

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url("../fonts/Roboto-Regular.woff2") format('woff2'), url("../fonts/Roboto-Regular.ttf") format('truetype');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}

поведение появляется в Firefox, если у меня нет локального локального Roboto-Regular, если я устанавливаю локально локально Roboto-Regular, проблема исчезает. Поскольку я не ожидаю, что у всех будет установлен Roboto-Regular локально, я удалил ссылки на шрифты local() из тега @font-face src.

@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/Roboto-Regular.woff2") format('woff2'), url("../fonts/Roboto-Regular.ttf") format('truetype');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}

Это исправляет это для меня. Больше не требуется перезагрузка ненужных шрифтов при каждом изменении размера окна браузера.

Ответ 2

Принимая удар, но с FF вы получаете тонну настройки (esp, если вы используете аддоны).

  • Запускаете ли вы какую-либо страницу переопределяет CSS через плагин/аддон через локальный браузер
  • Доступно ли обновление версии для установки FF?
  • Возникает ли проблема в SBX/testing или она также появляется "в дикой природе" на другом компьютере? При тестировании браузера я предпочитаю тестировать на нескольких компьютерах (и типах устройств), чтобы изолировать локальные проблемы конфигурации.
  • Проводите ли вы какие-либо тесты на лакмус/страницу?

Ответ 3

Другие предложили это для FF:

<FilesMatch "\.(ttf|otf|woff)$">
<IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>

Ответ 4

В Firefox используется другой механизм рендеринга (Gecko) по сравнению с Chrome (Blink), который может объяснить поведение разных рендеринга. Однако, поскольку нет явной информации или документации, которые можно найти по этому вопросу, конкретный ответ не может быть дан. Лучше всего довести это до Mozilla и тем временем увидеть, можете ли вы использовать альтернативу @font-face, если это мешает вашей работе.

Ответ 5

Некоторые шрифты не работают очень хорошо при определенных размерах, поэтому, когда вы увеличиваете или уменьшаете размер шрифта, который сделает Firefox, это изменить шрифт на нечто очень похожее. Вы можете проверить это, просмотрев все шрифты и медленно меняя размер шрифта. Некоторые из шрифтов настолько близки друг к другу, что вы даже не заметите разницы, хотя внимательно следите.

Ответ 6

Сообщение в блоге Woff и кеширование * предполагают, что при использовании неправильного/неизвестного типа MIME шрифт не будет кэшироваться и снова запрашиваться каждый раз, когда это необходимо. В статье они не используют правильный тип, хотя, как это было тогда не стандартизировано.

Статья довольно старая, начиная с 2010 года и может быть неактуальной, но использование правильного типа MIME, конечно же, не повредит. правильный тип MIME для WOFF - application/font-woff.

* Первоначально опубликовано Bes, но удалено с помощью ♦. Не объясняя, почему шрифт должен быть запрошен снова при изменении размера, я думаю, что все же может быть полезно рассмотреть проблемы кэширования.