Использование @ font-face замедляет время загрузки. Могу ли я заставить клиента кешировать шрифт? - PullRequest
13 голосов
/ 24 июня 2009

Обновление: Похоже, что информация запроса заголовка является виновником. Как бы я изменил свойство max-age заголовка запроса? ТИА.


Привет, я использую @ font-face на веб-сайте и испытываю задержку загрузки текста (предположительно из-за загрузки шрифта на каждой странице). Я так понимаю, что клиент должен загрузить шрифт один раз для правильного отображения, но на каждой странице?

Есть ли способ заставить браузер кэшировать этот файл? Или есть другая альтернатива для ускорения загрузки шрифта? (Этот вопрос более уместен для публикации на Ошибка сервера ?)

Спасибо заранее. В худшем случае, я буду жить с задержкой, поэтому мне не нужны никакие ответы "take off font font" ...;)

Дополнительная информация:

  • Я проверял это в Safari (4) и Firefox (3.5RC1) на Mac и Windows (XP и 7)
  • Все браузеры, на которых я тестировал, в настоящее время настроены на кэширование (по умолчанию включено)
  • URL-адрес не динамический, это просто "/fonts/font.otf"
  • URL-адрес шрифта правильный, так как страница загружает шрифт и отображает его правильно, хотя и медленнее, чем обычно
  • Заголовок запроса:

    Cache-Control: макс возраста = 0
    If-Modified-Since: ср, 24 июня 2009 03:46:28 GMT
    If-None-Match: W / "484d9f2-a5ac-46d10ff2ebcc0"
    Referer: http://testurl.com/
    Пользователь-агент: Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_6; ru-ru) AppleWebKit / 530.13 (KHTML, как Gecko) Версия / 4.0 Safari / 530.15

  • Заголовки ответа:

    Подключение: Keep-Alive
    Дата: четверг, 25 июня 2009 г. 02:21:31 GMT
    Etag: "484d9f2-a5ac-46d10ff2ebcc0"
    Keep-Alive: тайм-аут = 10, максимум = 29
    Сервер: Apache / 2.2.11 (Unix) mod_ssl / 2.2.11 OpenSSL / 0.9.8i DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635

Ответы [ 2 ]

4 голосов
/ 24 июня 2009

Вы никогда не можете заставить браузер что-то кэшировать, только поощряйте это. Я не могу представить себе причину, по которой файл шрифта с правильными заголовками expires не будет кэширован, что приводит нас к:

  • Это ошибка браузера (вы не говорите, какой браузер)
  • Ваши заголовки управления кешем отсутствуют или неверны
  • Ваш браузер настроен так, чтобы ничего не кэшировать (кешировать изображения?)
  • URL вашего шрифта является динамическим, поэтому браузер считает, что каждый запрос относится к другому ресурсу
  • Файл шрифта на самом деле отсутствует или содержит ошибку URL.
  • Задержка НЕ ​​вызвана загрузкой шрифта (вы сказали, что предположите в этом проблема)

Я думаю, что больше информации в порядке.

РЕДАКТИРОВАТЬ: установить контроль кеша зависит от сервера и языка. Посмотрите на mod_expires для получения информации о кэшировании в Apache.

2 голосов
/ 24 июня 2009

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

...