Простой CSS-трюк для сокращения времени загрузки страницы
Оцените материал
- 1
- 2
- 3
- 4
- 5
(16 голосов)
Все хотят, чтобы их страница загружалась быстрее. Это также полезно и в рамках поисковой оптимизации. Давайте посмотрим, как можно сократить время загрузки страницы, внеся несколько изменений в CSS.
Влияние CSS на время загрузки страницы
Загрузка CSS — один из основных факторов, влияющих на время загрузки страницы. Когда приложение встречает файл CSS, оно загружает его в приоритетном порядке. На основе CSS создаются объектные модели CSS (CSSOM). После создания CSSOM он объединяется с деревом DOM для создания «дерева рендеринга». Дерево рендеринга создается, когда дерево DOM объединяется с CSSOM и обеспечивает правильный стиль для всех компонентов на странице.
Чем больше CSS-кода в приложении, тем больше времени уходит на создание CSSOM и его слияние с DOM для создания дерева рендеринга. Как только HTML встречает файл CSS, он ожидает загрузки файла и создания CSSOM. Парсер ожидает завершения этой операции. Поэтому говорят, что CSS блокирует рендеринг.
Используем неблокирующий CSS
Чтобы решить эту проблему, мы можем просто использовать трюк и улучшить производительность приложения. Мы хотим, чтобы браузер не ждал загрузки CSS и создания CSSOM во время начальной загрузки страницы. Мы можем отложить создание CSSOM для некритических файлов CSS. Представим, что у нас есть некоторый CSS, применяемый к определенному элементу, который будет отображаться только после начальной загрузки страницы. Таким образом, нам не нужно заставлять загрузку страницы ждать загрузку и анализ CSS.
HTML
<link rel="stylesheet" href="/path/to/my.css" media="print" onload="this.media='all'">
В приведенном выше коде указано, что значением “media” для CSS является “print”, что означает, что CSS не будет применяться изначально и будет применен, когда пользователь попытается распечатать страницу. Наряду со ссылкой мы добавили функцию на событие “onload”, которая после загрузки страницы изменяет значение “media” на “all”, сделав его доступным для всех медиа-типов.
Это происходит, когда страница загружается, и, таким образом, страница не ждет загрузки упомянутого CSS и создания CSSOM. Это ускоряет загрузку страницы.
* — Атрибут media=»print» следует применять только к тем элементам CSS, которые не влияют на первоначальную загрузку страницы. Стили, которые требуются при загрузке страницы, не могут иметь media=»print».
Оригинал статьи: Simple CSS Hack to Reduce Page Load Time
Автор статьи: Mayank Gupta
Перевод: Земсков Матвей
Другие материалы в этой категории: « SVG-спрайты и их использование
Наверх
Категории блога
- Битрикс (40)
- HTML-верстка (54)
- Joomla (18)
- JavaScript, jQuery (26)
- PHP (10)
- Базы данных (5)
- Разное (23)
Мои услуги
Предлагаю следующие услуги:
- Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
- Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
- Настройка и кастомизация компонентов и модулей для указанных CMS
- Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
- Разработка лендингов (landing-pages)
По все вопросам обращайтесь через форму обратной связи
Скачать
Предлагаю вашему вниманию:
- Шаблон документа HTML5 (zip, 35. 41 Кб)
- Шаблон jQuery-плагина (zip, 426 байт)
- Шаблон сайта 1С-Битрикс (zip, 3.11 Кб)
Полезное
- Шпаргалки (Cheat Sheets)
- Генератор паролей
- Метка времени для заданной даты
События jQuery
События jQuery и их обработка являются важнейшей составляющей большинства скриптов. События – это реакция браузера на простейшие действия пользователя и умение работать с ними помогает сделать веб-страницы интерактивными.
Вы можете обработать любое событие, возникшее на странице, такие как перемещение курсора мыши, нажатие кнопок на клавиатуре или загрузка документа. Эти методы позволяют работать как со стандартными событиях Javascript, так и с событиями предоставленными самой библиотекой jQuery.
Список функций
События браузера
.error() – устанавливает обработчик ошибки при загрузке элементов (например отсутствие необходимой картинки на сервере).
.resize() – устанавливает обработчик изменения размеров окна браузера, либо, запускает это событие.
.scroll() – устанавливает обработчик “прокрутки” элементов документа, либо, запускает это событие.
Загрузка документа
.load() – устанавливает обработчик полной загрузки выбранных элементов (метод устарел с версии jQuery 1.8).
.ready() – устанавливает обработчик готовности дерева DOM.
.unload() – устанавливает обработчик выхода со страницы (при переходе по ссылке, закрытии браузера и.т.д.) для объекта window (метод устарел с версии jQuery 1.8).
Прикрепление обработчиков
.bind() – устанавливает обработчик события на выбранные элементы страницы. Обработчик не сработает на элементах, появившихся после его установки.
.delegate() – устанавливает обработчик события на элементы, соответствующие заданному селектору.
.on() – универсальный метод для установки обработчиков событий на выбранные элементы страницы.
.off() – удаляет с выбранных элементов страницы обработчики событий, установленные с помощью метода .on().
.one() – устанавливает обработчик события выбранным элементам страницы. Особенностью метода является то, что обработчик будет вызван не более одного раза, на каждом из элементов.
.trigger() – вызывает событие у выбранных элементов, что приводит к запуску обработчиков этого события.
.triggerHandler() – вызывает выполнение обработчиков заданного события у выбранных элементов. Cамо событие, при этом, не происходит.
.unbind() – метод необходим для удаления обработчиков событий, установленных на выбранных элементах методами bind(), one() или методами с узким назначением (click(), focus() и. т.д).
События клавиатуры
.keydown() – устанавливает обработчик перехода клавиши клавиатуры в нажатое состояние, либо, запускает это событие.
.keypress() – устанавливает обработчик ввода символа с клавиатуры, либо, запускает это событие.
.keyup() – устанавливает обработчик возвращения клавиши клавиатуры в ненажатое состояние, либо, запускает это событие.
События мыши
.click() – устанавливает обработчик “клика” мышью по элементу, либо, запускает это событие.
.contextmenu() – устанавливает обработчик вызова контекстного меню на элементе (“клик” правой кнопкой мыши).
.dblclick() – устанавливает обработчик двойного “клика” мышью по элементу, либо, запускает это событие.
.hover() – устанавливает обработчик(и) двух событий: mouseenter и mouseleave.
.mousedown() – устанавливает обработчик нажатия кнопки мыши на элементе, либо, запускает это событие.