Оптимизация для улучшения времени загрузки страниц
Коди Линдли (Cody Lindley) | 11 июня 2010 г. Актуальный на сегодняшний день вопрос: каковы наиболее существенные механизмы оптимизации, которые можно реализовать при конструировании веб-страниц? Эту область веб-разработки лучше всего описывает термин «оптимизация времени загрузки». В этой статье изучаются наиболее важные методы оптимизации времени загрузки для создания быстрых веб-страниц. В другой статье я буду рассматривать методы оптимизации времени выполнения. Оптимизации времени выполнения делают упор на производительность веб-страницы после ее загрузки клиентом (например веб-браузером). В частности, они больше относятся к взаимодействию с пользователем, когда тот приступает к работе после загрузки страницы. Однако в этой статье мы займемся оптимизациями времени загрузки. Оптимизации времени загрузки связаны с сокращением времени, необходимого для загрузки веб-страницы и всех последующих загрузок страниц. Прежде чем приступить к рассмотрению некоторых оптимизаций времени загрузки, я хочу дать рекомендацию. Используйте измерительный инструмент для проверки времени загрузки! Я знаю, что такая очевидная рекомендация может выглядеть глупо, но измерение исключительно важно. Исходя из моего опыта, слишком много разработчиков воздерживается от измерения производительности страницы. Итак, проще говоря, сделайте измерение производительности веб-страницы частью ежедневной работы в качестве веб-разработчика. Выбранный мной измерительный тест находится на сайте http://www.webpagetest.org. В качестве краткого обзора этого инструмента взгляните на тест веб-страницы, выполненный для главной страницы этого сайта. Web Page Test (тест веб-страницы) используется для измерения времени загрузки веб-страницы. Кроме простого измерения времени загрузки, этот тест можно использовать для диагностики причин медленной работы веб-страницы. Вкратце, он предоставляет сведения, необходимые для понимания наиболее затратных частей архитектуры страницы HTML, относящиеся к размерам файлов, запросам HTTP и отрисовке документов. В частности, интерактивный инструмент Web Page Test подробно рассматривает все действия HTTP, которые возникают во время загрузки веб-страницы. Затем этот инструмент захватывает эти действия и предоставляет различные диаграммы, графики, визуальные элементы и отчеты для объяснения, что происходит во время каждого запроса HTTP. Кроме того, он предоставляет подробности того, как запросы HTTP в целом влияют друг на друга, а также какое это имеет отношение к итогу, то есть к общему времени загрузки. Честно, чтобы разобраться в этом инструменте, достаточно посетить сайт и начать им пользоваться. Если вы читаете эту статью и ищете ответы, относящиеся к производительности, тогда функциональность и сведения, предоставляемые этим инструментом, приобретут особенное значение, как только вы начнете его использовать. Я настоятельно рекомендую открыть окно браузера прямо сейчас и воспользоваться инструментом Web Page Test для тестирования веб-страницы. Если нужно небольшое руководство по использованию этого инструмента, можно извлечь демо-ролик от Дейва Артца (Dave Artz). Дейв — директор по оптимизации веб-сайтов в компании AOL. Следовательно, он может знать пару вещей, которые могут оказаться полезными. То, что этот инструмент является моим предпочитаемым измерительным инструментом, не значит, что он также будет и вашим. Существуют разные доступные инструменты, которые предоставляют если не идентичные, то очень похожие измерения. Далее приводится список некоторых наиболее хорошо известных инструментов для измерения времени загрузки веб-страниц. Я сам использую многие из этих инструментов вместе с упомянутым выше Web Page Test от компании AOL.
Теперь, когда у нас есть измерительный инструмент, и мы можем тестировать оптимизации и находить возможности оптимизации, перейдем к изучению некоторых методов оптимизации страниц. Я хочу дать несколько простых и легко усваиваемых описаний. Поэтому мы сосредоточимся только на пяти категориях в безбрежном океане методов оптимизации. Это следующие категории: сокращение числа запросов HTTP; уменьшение размеров файлов; включение упорядочивания для скорости; распределение загрузки; проверка времени отклика сервера. Сокращение числа запросов HTTP Этот метод сводится просто к уменьшению количества файлов, которые требует веб-страница. Уменьшая зависимости для изображений, таблиц стилей и скриптов, можно избежать узких мест, которые могут возникать из-за занятости браузера загрузкой активов (запросов HTTP). При построении веб-страниц необходимо стараться сократить зависимости, а следовательно и число запросов HTTP. Далее приводятся способы, которыми это можно сделать.
Уменьшение размеров файлов Надеюсь, это не является неожиданностью. Загрузка и анализ маленьких файлов выполняются быстрее, чем больших. Зная это, мы всегда должны сокращать размеры файлов (изображений, CSS, JS, HTML) до минимально возможных, дающих желаемый результат. Далее мы изучим пять способов, с помощью которых можно уменьшить размер файла.
Включение упорядочивания для скорости Представьте себе, порядок включения зависимостей в веб-страницу может напрямую влиять на то, сколько времени займет отрисовка и полная загрузка веб-страницы браузером. Это связано с алгоритмами управления запросами HTTP в браузере, и особенно важно то, как запрос HTTP браузера обрабатывает разные типы зависимостей (CSS, VC, JS). Далее подробно рассматриваются два метода включения зависимостей, которые могут улучшить время загрузки страницы.
Распределение загрузки Распределение загрузки может быть очень сложной темой. Как правило, количество подключений к одному имени узла в веб-браузере ограничено. Однако при распределении зависимостей на 3 или 4 имени узла браузер может открывать больше подключений, вытягивая зависимости с нескольких серверов одновременно. Конечно, существуют ограничения. Отличный обзор того, что поддерживают разные браузеры, см. на сайте browserscope. Чтобы распределять загрузку и получать одновременные подключения, работающие в нашу пользу, мы можем использовать следующие решения.
Проверка времени отклика сервера Не все сводится к тому, как быстро клиент (то есть веб-браузер) может загружать и анализировать страницу HTML. Сервер также играет роль. Перед тем как приступить к оптимизации клиента, возможно имеет смысл проверить, нет ли узких мест на стороне сервера. Эти проблемы могут иметь широкий диапазон причин: сложные запросы SQL, плохие модели баз данных, перегруженные серверы и непродуманная архитектура приложений, а также многие другие. В целом, если веб-страница загружается медленно, проверьте, не вызвано ли это сервером. Я был в ситуации, когда какие бы оптимизации ни применялись, сервер просто не отвечал в течение приемлемого времени. Это было вызвано проблемами на сервере. Наша оптимизация на стороне клиента помогала уменьшить время загрузки, но когда серверу требуется от 7 до 8 секунд для ответа на запрос HTTP, наши оптимизации на стороне клиента мало влияют на улучшение времени загрузки. В этом проекте много времени было потрачено на решение неправильной проблемы. После этого проекта, сталкиваясь с проблемами производительности загрузки, я всегда сначала проверяю, насколько быстро сам сервер отвечает на запросы HTTP. Производительность веб-страниц стала гораздо более сложной областью изучения. В этой статье только намечена сфера этой области знаний. В действительности инженер по оптимизации — это сама по себе должностная обязанность. Фактически сейчас компании набирают инженеров по оптимизации и создают целые департаменты, специализирующиеся на оптимизации кода, поставляемого на компьютеры и мобильные устройства. Если вы хотите глубже освоить то, что рассматривалось в этой статье, и продолжить изучение методов оптимизации времени загрузки, я настоятельно рекомендую изучить следующие ресурсы:
|