Что лучше, id или class? |
|
Далее давайте рассмотрим, как использование id или class влияет на скорость отображения страницы в браузере (сейчас речь не идет о множественном использовании одинаковых id - это и так запрещено спецификацией). Если элемент на странице встречается единственный раз (например, шапка или подвал), то мы можем с равным успехом использовать id и class для его стилизации. Методика. Размер файловЕстественно, что скорость работы одиночного CSS-правила весьма высока, и даже десятки и сотни их не должны заметно замедлить работу браузеров. Поэтому нужно изучать работу нескольких тысяч правил, иначе точность результатов будет весьма невысока. Использовать JavaScript для генерации HTML/CSS-кода не представляется разумным, ибо тогда придется учитывать еще и скорость работы JavaScript-движка в браузерах, и в итоге эксперимент будет недостаточно чистым. В результате проведенного исследования были сгенерированы статичные файлы (порядка 300 Кб каждый), которые содержали достаточное число различных CSS-селекторов. Это «достаточное» число подбиралось по нескольким параметрам, в том числе: размер файла и скорость работы HTML/CSS-кода в браузерах (она должна быть достаточно низкой, чтобы файлы в несколько сотен Кб уже заметно тормозили при открытии). Итоговые файлы содержали по 4096 объявлений различных CSS-классов (или различных идентификаторов), HTML-код содержал соответствующее количество блоков, у каждого свой индивидуальный класс (или идентификатор). Дополнительно проверялась скорость работы с простым наследованием узлов (div p, CSS1) и селектор для выбора потомка первого уровня (div>p, CSS2). Время открытия страницыПри тестировании браузеров нужно было, во-первых, открыть на клиенте соответствующую данному случаю страницу, а также как-то отследить время на отображение конкретно HTML/CSS-части (понятно, что оно не совпадает со временем открытия всей страницы, которое еще содержит некоторые накладные расходы). Для этого была использована простая техника: перед объявлением CSS-блока запоминается текущая метка времени, а после окончания HTML-блока, который должен отобразиться, запомненная метка вычитается из текущей. Таким образом, мы получаем (в идеале) время на отработку данных CSS-правил и кода, которыми ими описывается, на клиенте (плюс, возможно, еще какие-то более-менее постоянные расходы, которые нивелируются, если брать относительный, а не абсолютный выигрыш). Конечно, каждую тестовую страницу можно было подгружать в невидимом iframe или даже AJAX-запросом. Но ведь мы хотим узнать, фактически, скорость рендеринга браузером CSS-правил и соответствующего кода, а это время будет расходоваться только при отображении страницы в окне браузера. Поэтому подгружаемую страницу нужно отображать на экране (по возможности, максимального размера), чтобы отследить имеющуюся разницу. РезультатыНиже приведена большая таблица с результатами тестов, которые заключаются в среднем времени отображения страницы для различных вариаций селекторов и разных браузеров. Выделено время, меньшее по сравнению с аналогом. Хочется подчеркнуть, что имеет смысл только относительное ускорение использования одних типов селекторов относительно других в пределах одного браузера. Все времена даны в миллисекундах. Сравнивать абсолютные значения в рамках данного эксперимента не представляется возможным, ибо каждому браузеру дополнительно нужно было расположить на странице несколько тысяч «плавающих» блоков с заданными размерами (float:left; width:20px; height:20px, фон для которых и задавался). Эта задача не имеет ничего общего со скоростью работы CSS-селекторов, но может отнимать существенное время у браузера на подготовку изображения страницы на экране (как видно, например, для Opera).
Таблица 6. Для каждого селектора приведено время, затраченное браузером на отображение тестового случая с этим селектором в миллисекундах ВыводыЕдинственный вывод, который можно с твердостью сделать, - это преимущество использования #id перед p#id (средневзвешенное по всем браузерам для Рунета получается 9%). Также можно с некоторой уверенностью говорить об использовании .class вместо p.class (10%). Еще стоит обратить внимание на существенное (до 2,5 раз) ускорение при переходе от CSS1-селекторов к CSS2 (от div p к div>p, в тех браузерах, которые это поддерживают). Дополнительно нужно, наверное, отметить, что выборка элементов по классу работает, в целом, быстрее, чем по идентификатору (11%). Все остальные выводы уже можно делать, анализируя данные из таблицы. IE всех версий стабильно выполнял все тесты примерно на одном уровне, а при его текущем доминировании оптимизация должна идти, в первую очередь, для него.
|
Колдунщики от ЯндексаРазработчики поисковых машин стремятся к тому, чтобы дать пользователям лучшие ответы на их запросы. Иногда таким ответом может оказаться число (например, погода в каком-нибудь городе), картинка (например, адрес на карте), перевод слова или четверостишие. Когда под рукой есть подходящий массив информации, ответ можно дать сразу. Поэтому Яндекс дополняет результаты поиска по интернету... Читать полностью |
Алгоритм Магадан14 апреля 2008 года адресу buki.yandex.ru начала тестироваться новый поисковый алгоритм «Магадан». Кроме того, что увеличилось вдвое количество факторов ранжирования, был также добавлены следующие нововведения: Читать полностью |
Руководство по оптимизации сайта под поисковые системы: не так страшен черт…Эта статьяобращена как к новичкам, так и к опытным оптимизаторам и SEO -консультантам. Статья родилась в противоположность утверждениям, что поисковая оптимизация сайта- сложная процедура и якобы требует просто феерически глубоких знаний ометодах раскрутки. На самом деле, получение результатов от SEO - долгий процесс, но методы поисковой оптимизации достаточно просты. Ниже я попытался... Читать полностью |
Алгоритм Арзамас10 апреля 2009, сразу в основном поиске, без выкладки на тестовый, в Яндексе заработала поисковая программа Арзамас. Читать полностью |
