Скорость работы веб-приложения

Clock Mini Icon10 декабря 2010,18:36

Часто мы хотим, чтобы страница грузилась быстро. Как известно, время загрузки складывается из трёх составляющих — скорость работы сети (время, которое нужно данным, чтобы попасть от клиента к серверу (запрос) и обратно (ответ)), скорость работы серверного приложения и скорость работы браузера (rendering). Чтобы обеспечить наилучшее качество работы сервиса, необходимо понять, где же возникают задержки и устранить их. Начнём с изучения времени генерации страницы. Зная это время, мы сможем ответить на вопрос — сервер ли "тормозит" или проблема в слишком "тяжёлых" страницах.

Для этого есть нестандартный заголовок X-Runtime. Его устанавливают многие фреймворки, в частности Ruby on Rails. Посмотрим, что получается:

 >>  curl http://www.larkinthedark.com/ -I
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Keep-Alive: timeout=20
Status: 200
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.11
ETag: "70c9b07d388bd06e931c24fc2692d149"
X-Runtime: 4
Content-Length: 3773
Cache-Control: private, max-age=0, must-revalidate
Server: nginx/0.8.34 + Phusion Passenger 2.2.11 (mod_rails/mod_rack)

Как видно из этого фрагмента, сервер передал нам время генерации страницы в поле X-Runtime. Для Rails 2.x, значение указано в миллисекундах (а для Rails 3.x - в секундах). Но запускать curl каждый раз, смотреть в Firebug или открывать Response headers в Web developer toolbar неудобно. Поэтому мы разработали специальное дополнение для Firefox, которое показывает это значение в строке состояния. Можно скачать его здесь.