Измеряем эффективную ширину канала пользователей

Можно легко измерить реальную пропускную способность канала для пользователей исследуемого сайта. И в том случае, если пользователи загружают страницу существенно медленнее, чем могли бы (учитывая физические ограничения на их канал), возможно, стоит применить меры к исправлению этой ситуации.

Прежде чем давать браузеру любые ссылки на внешние объекты (<img src="...">, <link rel="stylesheet" href="...">, <script src="..."> и т. д.), мы можем записать текущее время. После загрузки всей страницы можно будет его вычесть и получить, таким образом, полное время загрузки страницы (за исключением получения HTML-файла и задержек, связанных с первым соединением с сервером). Полученное время можно затем добавить к вызову любого URL (например, картинки), расположенного на вашем сервере.

JavaScript-код для этого будет выглядеть примерно следующим образом:

<html>
<head>
<title>...</title>
<script type="text/javascript">
<!--
var began_loading = new Date().getTime();<

window.onload = function(){
  new Image().src = '/timer.gif?u=' + self.location + '&t=' + <
  ((new Date().getTime() - began_loading) / 1000);
};
// -->
<!--
Здесь будут размещаться ссылки на любые внешние JS- или CSS-файлы,
главное, чтобы они шли ниже верхнего блока
// -->
</head>
<body>
<!--
Здесь идет обычное содержание страницы
// -->
</body>
</html>

Эта конструкция произведет примерно следующую запись в лог-файл:

127.0.0.1 - - [28/Oct/2006:13:47:45 -0700]
  "GET /timer.gif?u=http://example.com/page.html&t=0.971 HTTP/1.1" 200 49 ...

В этом случае, как можно понять из записи, загрузка оставшейся части страницы http://example.com/page.html заняла у пользователя 0,971 секунды. Если предположить, что всего на странице было загружено файлов общего размера в 57842 байтов, 57842 байтов * 8 битов в байте / 0,971 секунды = 476556 битов в секунду (4б5 Кбит). Такова эффективная пропускная способность канала при загрузке этой страницы. Если у пользователя физический входящий канал 1,5 Мб, значит есть большой простор для увеличения скорости загрузки.

После того как будет собрана некоторая статистика по времени загрузки страницы и эффективной ширине канала для реальных пользователей, можно поэкспериментировать с изменениями, которые способны изменить эти показатели к лучшему. В случае значительных улучшений этого показателя стоит закрепить внесенные изменения.