none
Экспорт времени полной загрузки страницы. RRS feed

  • Вопрос

  • Господа!

    Как можно штатными методами (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 странички?

    Еще раз огромное спасибо!
    • Помечено в качестве ответа Аero 25 января 2019 г. 10:37
    • Изменено Аero 25 января 2019 г. 10:37
    • Снята пометка об ответе Аero 25 января 2019 г. 10:37
    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