Замедляют ли условные комментарии IE загрузку страницы? - PullRequest
3 голосов
/ 01 декабря 2009

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

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

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

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

1 Ответ

7 голосов
/ 01 декабря 2009

Это не на самом деле об условных комментариях как таковых, это как условная компиляция.

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

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

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

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

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

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

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

...