Замедляют ли условные комментарии IE загрузку страницы?

В последнее время у меня достаточно раз возникал аргумент «CSS-хаки» против «условных комментариев», и я подумал, что задам этот вопрос сообществу Stack Overflow.

<!--[if IE]>
 <link type="text/css" rel="stylesheet" href="ie-specific.css" /> 
<![endif]-->

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

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


person Scott    schedule 01.12.2009    source источник


Ответы (1)


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

Браузер IE увидит вашу страницу как содержащую

<link type="text/css" rel="stylesheet" href="ie-specific.css" /> 

(с небольшой дополнительной обработкой для оценки условия комментария).

Браузер не-IE просто увидит там комментарий.

Таким образом, единственное потенциальное влияние на производительность заключается в том, что браузеры IE должны будут оценить условие условного комментария (которое будет незначительным), а затем включить еще один файл CSS. В то время как, конечно, другие браузеры просто видят общий файл и полностью игнорируют комментарий.

Тогда возникает вопрос, каковы плюсы и минусы обслуживания IE (скажем) 5-килобайтного файла CSS, соответствующего стандартам, за которым следует (скажем) 2-килобайтный «хакерский» файл, а все остальные получают только 5-килобайтный файл; вместо предоставления всем файла размером 7 КБ с хитрым CSS. В зависимости от различных факторов, включая скорость сети и задержку, размер файла, количество ресурсов, используемых на странице в целом и т. д., это может оказать или не оказать заметного влияния на производительность в случае IE (бесспорно, это будет быстрее для пользовательских агентов, отличных от IE).

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

person Andrzej Doyle    schedule 01.12.2009
comment
Хорошо сказано, Андрей. Спасибо. - person Scott; 01.12.2009