Время отклика страницы, доступность и стабильность приложения – очень важные показатели любого веб-приложения. Если вы (или ваш заказчик) обеспокоен временем загрузки страниц, предоставляю вашему внимания несколько полезных и бесплатных утилит для создания быстрых веб-приложений.
Я постарался подобрать утилиты независимые от платформы и технологий разработки веб-приложений. Поэтому, даже если вы пишете на PHP не спешите закрывать эту страницу ;)
FireBug удобен не только для отладки, тестирования страниц и анализа страниц, но и для выявления времени загрузки различных составляющих страницы: графики, JavaScript, CSS и XHR файлов. Большинство из вышеупомянутых фич находится в закладке Net (“network”).
YSlow для FireBug измеряет скорость загрузки страниц, используя лучшие практики для высокопроизводительных сайтов от Yahoo! Developer Network. Позволяет выявлять причины задержки времени выполнения запроса: большой размер файла, время выполнения JavaScript, и т.д. С ее помощью очень удобно сжимать внешние JavaScript’ы и CSS файлы.
Fiddler 2 – прокси, который работает с трафиком между Вашим компьютером и удаленным сервером, и позволяет инспектировать и менять его. Fiddler можно расширять с помощью скриптов на языке JScript.NET (писать их очень просто), кустомизировать меню программы, и вообще - замечательный инструмент. Использовать его можно с любым браузером. На MSDN была замечательная статья по этому поводу, где помимо всех интересных вариантов использования этого инструмента рассматривись: способ уменьшения первого времени загрузки страницы (unprimed cache), анализ HTTP заголовка в ответах с сервера, создание специальных флагов для отслеживания потенциально опасных участков (в отношении производительности).
mon.itor.us – бесплатное веб-приложение предоставляющее набор инструментов для мониторинга производительности, доступности страницы, а также показывает статистику по трафику. Вы даже можете установить время отклика вашего сайта, и, в случае “падения” вашего сайта, вам будет выслано соответствующее письмо об этом. Другим полезным функционалом (которым я и сам частенько пользуюсь) является возможность сравнивать время загрузки страниц в различные периоды времени. Это удобно, когда страница меняется довольно часто, и необходимо сравнить производительность различных решений.
Cuzillion поможет вам увидеть, как различные компоненты страницы взаимодействуют друг с другом. Использование этой утилиты полезно во время работы над структурой страницы. Cuzillion был создан Стивом Сандресом, “директором по производительности” в Yahoo! (автором Yahoo’s perfomance best practisies и YSlow).
IBM Page Dialer визуально отображает время и порядок загрузки компонентов страницы. Эта утилита встраивается в клиентский Windows Socket Stack Internet Explorer для перехвата времени загрузки, размера и других данных о компонентов страницы. Поэтому достаточно просто нажать на один из элементов на странице, чтобы появилось всплывающее окно с подробной информацией об этой части страницы. В случае возникновения каких-либо событий на странице (скажем выполнение JavaScript функции) этот компонент покажет вам всю информацию о задействованных процессах.
Httpref – open-source тулзовина для измерения производительности HTTP сервера, использующего Linux платформу. Честно говоря об этой утилите я знаю лишь по-наслышке от одного PHP-разработчика. С его слов, это очень удобный инструмент для проведения нагрузочного тестирования вашего веб-приложения.
Pylot – также open-source утилита для проведения нагрузочного тестирования. Небольшим неудобством является то, что на вашем компьютере должен быть установлен Python, но для написания самих тестов вам не нужно знать сам язык – тесты создаются в XML-формате.
Следующая тулзовина под названием PushToTest TestMaker бесплатна и с открытым кодом. Предназначена для тестирования масштабируемости приложения. С ее помощью можно проводить и нагрузочное тестирование. Из множества других подобных утилит ее выделяет интуитивный интерфейс с хорошими визуальными отчетами и аналитическими инструментами. Resource Monitor один из них и помогает отслеживать нагрузку CPU, расход памяти, нагрузку сети и многое другое.
Wbox HTTP работает под Linux, Windows, и MacOS X. Посылая последовательно запросы к серверу в короткие промежутки времени, этот инструмент позволяет проводить стресс-тестирование вашего веб-приложения.
WebLOAD опять-таки инструмент с открытым кодом для профессионального нагрузочного и стресс-тестирования ваших веб-приложений. Скрипты для нагрузочного тестирования можно писать на JavaScript. Возможности этого инструмента не ограничиваются тестированием, в нем также можно разрабатывать и дебажить javascript код.
DBMonster позволяет оптимизировать структуру и индексы базы данных, ровно как и проводить нагрузочное тестирование вашей базы данных. С помощью генератора тестовых данных вы сможете оценить масштабируемость вашей базы данных. Поддерживает он большинство баз данных: MySQL, PostgreSQL, Oracle, MSSQL и видимо все базы данных, которые могут работать с JDBC драйвером.
OctaGate SiteTimer простая утилита для анализа процесса загрузки чего-либо на вашу страницу. Она предоставляет визуальную картину следующих событий: начальный запрос, соединение, начало загрузки, окончание загрузки.
Ссылки по теме
Ajax performance analysis – советы по оптимизации страниц от разработчиков IBM
Fiddler PowerToy - Part 2: HTTP Performance
Web Page Analyzer
Site-Perf.com – веб-утилита для мониторинга нагрузки сайта.
Apache JMeter – Java-инструмент для проведения нагрузочного тестирования Apache серверов
The Grinder – фреймоврк с открытым кодом для автоматизированного тестирования
Способы ускорения загрузки вашего сайта
Yahoo: высокопроизводительные Веб-страницы. Часть 2
Анализируем загрузку веб-страницы
Оптимизируем загрузку веб-страницы
Практический JS: ускоряем обработку событий
Практический JS: «отложенная» загрузка
Создаем высокопроизводительные HTML-страницы для IE