Сегодня я читал о OOCSS a>, в котором говорится, что использование этого подхода имеет 2 преимущества
- Более короткий CSS = лучшая производительность
- Лучшая ремонтопригодность
Я согласен со вторым пунктом, но первое преимущество - сделать css короче, добавив больше классов в html, которые увеличивают возможность повторного использования, но файл CSS всего веб-сайта можно кэшировать в браузере, но HTML каждой страницы отличается.
У меня вопрос: как более короткий файл CSS может повысить общую производительность сайта за счет добавления большего количества байтов (классов) в html, в то время как CSS - это один файл, который будет сразу загружен в кеш?
3 ответа
За счет упрощения селекторов CSS, сохранения свойств DRY и использования атрибутов class
в HTML, перекомпоновка и перерисовка будут (теоретически) облегченными и, следовательно, улучшат плавность и общую производительность сайта.
Перекомпоновка и перерисовка происходят, когда
- Изменение размера окна
- Смена шрифта
- Добавление или удаление таблицы стилей
- Изменения содержимого, например, когда пользователь вводит текст в поле ввода.
- Активация псевдоклассов CSS, таких как: hover (в IE активация псевдокласса родственного брата)
- Управление атрибутом класса
- Скрипт, управляющий DOM
- Расчет offsetWidth и offsetHeight
- Установка свойства атрибута стиля
(приведенный выше список скопирован из Reflows & Repaints: производительность CSS делает ваш JavaScript медленным? Николь Салливан, создательница OOCSS)
Также посмотрите это видео, чтобы увидеть в действии перекомпоновку и перерисовку: http://www.youtube.com/watch ? v = ZTnIxIA5KGw (примерно 30 секунд вашего времени)
Тем не менее, легко анализируемый CSS также улучшит отзывчивость вашего сайта (например, плавность), а не только качество поддерживаемого кода.
Очевидно, у этого нет никакого осмысленного ответа - каково определение слова «быстро»? Сколько байтов - это слишком?
Короткий ответ заключается в том, что если вы gzip-архивируете свой html, правильно кешируете вещи и делаете разумное повторное использование вещей, то это не имеет никакого значения.
Если вы беспокоитесь о добавлении дополнительных классов CSS, удалите все свои </li>
и т. Д., А также свои </body>
и </html>
. Кроме того, для любых атрибутов, которые представляют собой отдельные слова и не содержат каких-либо проблемных символов, отбросьте окружающий их "
. Эти изменения должны уравновесить добавление классов.
(В случае, если это прозвучало немного язвительно, я бы рекомендовал сделать это на вашем уровне кеширования - что-то вроде этого выполнит свою работу:
$page_content = str_replace(array("</option>","</td>","</tr>","</th>","</dt>","</dd>","</li>","</body>","</html>"),"",$page_content);
$page_content = preg_replace('/(href|src|id|class|name|type|rel|sizes|lang|title|itemtype|itemprop)=(\"|\')([^\"\'\`=<>\s]+)(\"|\')/i', '$1=$3', $page_content);
$page_content = preg_replace('!\s+!', ' ', $page_content);
Находятся
Прирост производительности от "более короткого CSS" двоякий:
- Меньшая таблица стилей
- Более короткие селекторы
Селектор long css неэффективен. Стив Содерс (среди прочих) много писал о Производительность CSS-селектора. Более эффективные селекторы, вероятно, более чем компенсируют несколько лишних байтов для нескольких классов.
Использование метаязыка CSS, например LESS или Sass, особенно. если вы используете @extend
или mixins
дает вам лучшее из всех миров.
Похожие вопросы
Новые вопросы
html
HTML (язык разметки гипертекста) - это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы, касающиеся HTML, должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто используется вместе с [CSS] и [javascript].