Как я могу отслеживать время рендеринга в браузере?
Я работаю над внутренней корпоративной системой, которая имеет веб-интерфейс с использованием Tomcat.
- как я могу контролировать время рендеринга определенных страниц в браузере (IE6)?
- Я хотел бы иметь возможность записывать результаты в файл журнала (отдельный файл журнала или журнал доступа Tomcat).
EDIT: в идеале мне нужно контролировать рендеринг на клиентах, обращающихся к страницам.
6 ответов
в случае, если браузер имеет JavaScript включен одна из вещей, которые вы могли бы сделать, это написать встроенный скрипт и отправить его первым делом в HTML. Сценарий будет делать две вещи:
- запись текущего системного времени в переменной JS (если Вам ПОВЕЗЕТ, время может примерно соответствовать времени начала рендеринга страницы).
- прикрепите функцию JS к событию onload страницы. Эта функция будет запрашивать текущее системное время еще раз, вычесть время начала из шага 1 и отправьте его на сервер вместе с местоположением страницы (или некоторым уникальным идентификатором, который вы можете вставить в встроенный скрипт динамически на вашем сервере).
<script language="JavaScript">
var renderStart = new Date().getTime();
window.onload=function() {
var elapsed = new Date().getTime()-renderStart;
// send the info to the server
alert('Rendered in ' + elapsed + 'ms');
}
</script>
... usual HTML starts here ...
вам нужно убедиться, что страница не переопределяет onload позже в коде, а добавляет в список обработчиков событий.
на API синхронизации навигации доступно в современных браузерах (IE9+) кроме Safari:
function onLoad() {
var now = new Date().getTime();
var page_load_time = now - performance.timing.navigationStart;
console.log("User-perceived page loading time: " + page_load_time);
}
Что касается неинвазивных методов,Молот измеряет полное время загрузки (включая выполнение JavaScript), хотя и только в Firefox.
Я видел полезные результаты, когда фрагмент JavaScript может быть добавлен глобально для измерения начала и конца каждой операции загрузки страницы.
посмотреть селен - они предлагают дистанционное управление которое может автоматически начать различные браузеры (например IE6), страницы нагрузки, испытание для специфического содержания на странице. В конце генерируются отчеты, которые также показывают время отрисовки.
поскольку другие публикуют ответы, которые используют другие браузеры, я думаю, что тоже. Chrome имеет очень подробную систему профилирования, которая разбивает время рендеринга страницы и показывает время, необходимое для каждого шага на этом пути.
Что касается IE, вы можете рассмотреть возможность написания плагина. На рынке, похоже, мало таких инструментов. Может, продашь?
в Firefox вы можете использовать Firebug для отслеживания времени загрузки. С помощью плагина YSlow вы даже можете получить рекомендации, как улучшить производительность.