2014-09-15 5 views
5

У меня есть приложение, использующее шрифты шрифта FontAwesome для значков, и все работает отлично, когда я размещаю файлы с моего сервера. Когда я включаю поддержку CDN на своем сайте, IE 11 ведет себя довольно странно в отношении файлов шрифтов. При навигации по странице либо путем нажатия ссылки, либо вручную введите URL-адрес, файлы шрифтов загружаются штрафом ~ 95% времени. Если я перезагружаю страницу или использую кнопки вперед/назад (или ~ 5% времени, когда нормальная загрузка страницы не работает), IE 11 загружает первый файл шрифта, проигрывает/падает/игнорирует содержимое тела ответа как-то , пытается загрузить второй файл, теряет содержимое тела ответа, стирает-промыть-повторить, и в итоге у меня нет глифов шрифтов. Все остальные браузеры (включая более старые версии IE) работают нормально.IE 11 не загружает файлы ресурсов

@font-face декларация в CSS:

@font-face { 
    font-family: 'FontAwesome'; 
    src: url('/common/fonts/fontawesome-webfont.eot'); 
    src: url('/common/fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), 
     url('/common/fonts/fontawesome-webfont.woff') format('woff'), 
     url('/common/fonts/fontawesome-webfont.ttf') format('truetype'), 
     url('/common/fonts/fontawesome-webfont.svg#fontawesomeregular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

Нормальная загрузки страницы:

Резюме:

URL          Protocol Method Result Type      Received Taken Initiator Wait Start Request Response‎‎ Cache read‎‎ Gap‎‎ 
/common/fonts/fontawesome-webfont.eot HTTPS  GET  200  application/octet-stream 99.78 KB 109 ms @font-face 2449 0  47  62  0   1420 

заголовок Ответ:

Key       Value 
Response      HTTP/1.1 200 OK 
Content-Type     application/octet-stream 
Last-Modified     Mon, 04 Aug 2014 12:49:48 GMT 
Accept-Ranges     bytes 
ETag       "07ef492e2afcf1:0" 
Server       Microsoft-IIS/7.5 
P3P       CP="NON DSP COR ADM DEV PSA IVA CONi TELi OUR BUS NAV" 
Access-Control-Allow-Origin * 
Content-Length     101712 
Expires      Mon, 15 Sep 2014 18:48:40 GMT 
Cache-Control     max-age=0, no-cache, no-store 
Pragma       no-cache 
Date       Mon, 15 Sep 2014 18:48:40 GMT 
Connection      keep-alive 

тело Response прод Файл шрифта ains.

На перезагрузки страницы:

Резюме:

URL          Protocol Method Result Type      Received Taken Initiator Wait Start Request Response‎‎ Cache read‎‎ Gap‎‎ 
/common/fonts/fontawesome-webfont.eot HTTPS  GET  200  application/octet-stream 462 B  47 ms @font-face 983 0  47  0   0   1248 
/common/fonts/fontawesome-webfont.woff HTTPS  GET  200  application/x-font-woff 461 B  63 ms @font-face 1092 0  63  0   0   1123 
/common/fonts/fontawesome-webfont.ttf HTTPS  GET  200  application/octet-stream 462 B  93 ms @font-face 1155 15  78  0   0   1030 

заголовка ответа ("fontawesome-webfont.eot", другие выглядят одинаково, различия в длине содержимого, за исключением, что составляет разница в размере файла):

Key       Value 
Response      HTTP/1.1 200 OK 
Content-Type     application/octet-stream 
Last-Modified     Mon, 04 Aug 2014 12:49:48 GMT 
Accept-Ranges     bytes 
ETag       "07ef492e2afcf1:0" 
Server       Microsoft-IIS/7.5 
P3P       CP="NON DSP COR ADM DEV PSA IVA CONi TELi OUR BUS NAV" 
Access-Control-Allow-Origin * 
Content-Length     101712 
Expires      Mon, 15 Sep 2014 19:05:13 GMT 
Cache-Control     max-age=0, no-cache, no-store 
Pragma       no-cache 
Date       Mon, 15 Sep 2014 19:05:13 GMT 
Connection      keep-alive 

Корпус отклика пуст. Обратите внимание, что длина содержимого в деталях не соответствует «полученному» значению в сводке.

Согласно журналам CDN и отслеживанию трафика локально в Fiddler2, все файлы шрифтов подаются CDN. Насколько я могу судить, ответ CDN идентичен отклику моего сервера.

Включение кэширования, по-видимому, устраняет эффект (по крайней мере, я не смог воспроизвести его с включенным кешированием), но Powers That Be обеспокоен тем, что это повлияет на другие, не кэшируемые активы в приложении, как больше переходят на CDN, и поэтому я должен найти основную причину и исправить ее, а не надавить на нее бандажную помощь.

Почему IE 11 может вести себя так, как будто ответы имеют пустые тела ответа? Почему IE 11 может обрабатывать ответ от CDN иначе, чем ответ от сервера приложений, если файлы и заголовки ответов одинаковы?

ответ

0

Так что у меня нет хорошего объяснения, почему это не удается, но решение, которое работает, а не тот, который идеален. Вы можете сэкономить много времени, пытаясь устранить эту проблему и до сих пор не добраться, есть масса переменных.

Можете ли вы установить резервную копию шрифта, чтобы попасть на ваш сервер, а не в cdn?

Вы должны уметь указывать его в css, что вы используете одну грань шрифта, а затем другую, если она терпит неудачу.

body { font-family:"FontAwesome", "FontAwesomeFallback"; } 

Сделать точку FontAwesomeFallback в локальный каталог и посмотреть, если IE11 имеет один и тот же вопрос. Если это проблема CDN, попадание в локальные каталоги не должно быть проблемой, и шрифт будет отображаться правильно. Если это все еще не удается, это может быть проблемой с самим шрифтом.

8

Я видел подобную проблему с CDN. Я собираюсь обновить ответ, если найду любое другое решение. IE имеет проблему, если ваши файлы шрифтов не имеют кеша.

Надеюсь, эта ссылка поможет.

On IE CSS font-face works only when navigating through inner links

Update: Проблема фиксированной для меня после установки правильного управления кэша в файле .htaccess

Я сделал мину для максимального возраста = 3600, но макс возраста = 0 будет работать слишком

<FilesMatch "\.(ttf|otf|eot|woff)$"> 
<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin "*" 
Header set Cache-Control "max-age=3600" 
</IfModule> 
</FilesMatch> 
1

MIME-типы очень важны в IE11. Вы должны убедиться, что соответствующие типы MIME отправляются файлы шрифтов:

  • application/vnd.ms-fontobject для СРВ шрифтов
  • application/font-woff для WOFF шрифтов

Что CDN вы используете? С официальным FontAwesome CDN (http://www.bootstrapcdn.com/#fontawesome_tab) все должно работать нормально.

1

Для кого-либо другого, находящего эту проблему, следующая информация, не обязательно решение.

IE по-видимому, есть ошибка под названием:

@ шрифт лица не работает с Internet Explorer и HTTP-заголовок Pragma = нет кэша

Они закрыли ошибку в Выиграл 't Fix.

Посмотреть подробности здесь: http://connect.microsoft.com/IE/feedbackdetail/view/992569/font-face-not-working-with-internet-explorer-and-http-header-pragma-no-cache

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