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

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

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


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

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

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

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

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

    Cache-Control: макс возраста = 0
    If-Modified-Since: Wed, 24.06.2009 03:46:28 GMT

    If-None-Match: W/ "484d9f2-a5ac-46d10ff2ebcc0"
    Referer: http://testurl.com/
    User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; ru-us) AppleWebKit/530.13 (KHTML, например, Gecko) Версия /4.0 Safari/530.15

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

    Connection: Keep-Alive
    Дата: Чт, 25 июн 2009 02:21:31 GMT
    Etag: "484d9f2-a5ac-46d10ff2ebcc0"
    Keep-Alive: timeout = 10, max = 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

4b9b3361

Ответ 1

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

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

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

EDIT: настройка кеша - это специфическая для сервера и языка. Посмотрите mod_expires для получения информации о кешировании в Apache.

Ответ 2

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