Лучший отвечающий
Экспорт времени полной загрузки страницы.

Вопрос
-
Господа!
Как можно штатными методами (Bat, PowerShell) без использования стороннего софта измерять время открытия страницы и экспортировать его в файл TXT единой цифрой в мс? На скриншоте указал какие цифры мне интересны. Как результат хочу иметь файл на жестком диске с одной единственной цифрой в миллисекундах. Спасибо!
22 января 2019 г. 17:12
Ответы
-
вам что в итоге надо получить\сравнить?
фактически та циферка на скриншоте в записи мало чо значит(просто сумма времени по всем позициям).
время загрузки всех элементов на страничке?
время обработки странички с учетом рендера(причем это зависит от текущей производительности компа)?
а если там еще и элементы с задержкой подгружаются?
мы оцениваем работу конкретно ишака\едж?
просто можно например не парится и взять меже-комманд{инвоук-вебреквест гугль.ком} это одно, а например запустить браузер, открыть страничку и подождать это уже другое:
вот на коленке набросал:
$url = "http://contoso.com" $ie = New-Object -com internetexplorer.application; $ie.visible = $true; Measure-Command{ $ie.navigate($url); while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 1 } }
- Помечено в качестве ответа Аero 23 января 2019 г. 15:35
23 января 2019 г. 10:40
Все ответы
-
вам что в итоге надо получить\сравнить?
фактически та циферка на скриншоте в записи мало чо значит(просто сумма времени по всем позициям).
время загрузки всех элементов на страничке?
время обработки странички с учетом рендера(причем это зависит от текущей производительности компа)?
а если там еще и элементы с задержкой подгружаются?
мы оцениваем работу конкретно ишака\едж?
просто можно например не парится и взять меже-комманд{инвоук-вебреквест гугль.ком} это одно, а например запустить браузер, открыть страничку и подождать это уже другое:
вот на коленке набросал:
$url = "http://contoso.com" $ie = New-Object -com internetexplorer.application; $ie.visible = $true; Measure-Command{ $ie.navigate($url); while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 1 } }
- Помечено в качестве ответа Аero 23 января 2019 г. 15:35
23 января 2019 г. 10:40 -
Мне нужно общее время, как раз та цифра, которая включает в себя итоговые показатели загрузки всех элементов. А как заставить ваш скрипт не использовать кэш и выкладывать данные в файл, постоянно перезаписывая результат одной единственной цифрой в миллисекундах?23 января 2019 г. 15:34
-
Мне нужно общее время, как раз та цифра, которая включает в себя итоговые показатели загрузки всех элементов. А как заставить ваш скрипт не использовать кэш и выкладывать данные в файл, постоянно перезаписывая результат одной единственной цифрой в миллисекундах? И окошко браузера не открывать каждый раз, а просто делать это в фоне без интерфейса?
23 января 2019 г. 15:35 -
на будущее, не помечайте тему ответом если остались доп. вопросы.
ответов можно поставить несколько, если что, но лучше потом, т.к. в помеченный ответом вопрос меньше народу смотрит.
как то так(про кеш еще не смотрел, и скрипт не запускал, до работы доползу там гляну)
$url = "http://contoso.com" $ie = New-Object -com internetexplorer.application $ie.visible = $false while ($true){ $time=Measure-Command{ $ie.navigate($url); while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 1 } } echo ($time.TotalMilliseconds) > "C:\temp\123.txt" #timeout till refresh Start-Sleep -seconds 600 }
- Изменено Svolotch 24 января 2019 г. 7:10
24 января 2019 г. 5:00 -
и вообще такие вопросы в скриптинг бы надо кидать24 января 2019 г. 5:03
-
ну и как бы неплохо бы узнать, зойчем вам это все? что в итоге хотите?
UPD, с условием повтора накосячил
ща поменяю.
- Изменено Svolotch 24 января 2019 г. 7:10
24 января 2019 г. 7:10 -
Мы используем безагентскую систему мониторинга, которая должна собирать статистику качества работы интернет для конечного пользователя, по сути этот скрипт одна из его составляющих, по факту если у пользователя есть трудности с замедлением открытия страниц (и совершенно не важно по какой причине), нам необходимо реагировать быстрее чем начнутся массовые жалобы, как минимум потому что вал заявок может прийти в 17:59:59. Задача системы будет просто раз в 10-15 минут забирать цифры с текстовика, а его работу зашедулить например раз в минуту. Исключить кеш реально? Или он не будет играть роли из-за TTL странички?
Еще раз огромное спасибо!25 января 2019 г. 10:35 -
$url = "http://contoso.com" $ie = New-Object -com internetexplorer.application $ie.visible = $false #$ie.visible = $true while ($true){ $time=Measure-Command{ $ie.navigate($url,4) #flag 4 navNoReadFromCache. while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 1 } } echo ($time.TotalMilliseconds) >> "C:\temp\123.txt" echo ($time.TotalMilliseconds) #timeout till refresh Start-Sleep -seconds 60 }
ну как то так... потестируйте
учтите что сам скрипт уже в бесконечном цикле, ну и не забудьте что $ie.quit() в этом варианте как бы не предусмотрен и если вы сто раз вызовете скрипт и ручками стопните у вас сотня невидимых тырнет эксплореров будет висеть (ужас-ужас,ААААА! :-) )
- Изменено Svolotch 25 января 2019 г. 13:10
25 января 2019 г. 13:08 -
Спасибо, а quit куда необходимо подставить? Чтобы после измерения времени закрывать невидимые окошки?28 января 2019 г. 21:12
-
смотрите, в случае скрипт работает следующим образом - создается невидимый обьект интернет эксплорера затем в бесконечном цикле
while ($true){
бла-бла-бла
}
запускается следующая последовательность
переменной тайм присваевается значение времени выполнения вызова странички с указанием не использовать кеш при этом в цикле с временем опроса в 1 миллисекунду дожидаемся загрузки странички (READYSTATE_COMPLETE)
затем пишем данные в файл и ждем сколько то секунд до следующей итерации бесконечного скрипта.
по сути вам нужно убрать бесконечный скрипт и воткнуть $ie.quit()
кстати как вариант в начале неплохо было бы убирать данные из файла чтоб в случае бесконечной загрузки странички у вас старые данные в файле не бултыхались, или воткнуть таймаут условие на слишком долгую загрузку.
29 января 2019 г. 14:20