Есть ли альтернатива YSlow на Perl?

Я хотел бы иметь инструмент на Perl для сбора полезной статистики по загрузке страниц (например, время/скорость загрузки, информация CDN, заголовки, поиск DNS, сжатие)

Кто-нибудь знает, существует ли он или есть ли место, где можно узнать, как его сделать?


person vol7ron    schedule 04.07.2010    source источник
comment
Я не понимаю, почему бы вам просто не использовать YSlow. С Perl вам придется подключаться к различным компонентам браузера и т. Д. Не очень подходит для этого.   -  person Timothy    schedule 04.07.2010
comment
Если бы я хотел использовать get или LWP, я бы не загружал страницу через браузер. Я изменил version of на alternative to. Вы видите, к чему я клоню? --- Я пытаюсь получить информацию о загрузке моей страницы через Perl без использования браузера   -  person vol7ron    schedule 04.07.2010
comment
Инструмент на Perl? Что ты имеешь в виду? Perl CGI на стороне сервера или Perl-скрипт на стороне клиента? Пожалуйста, уточните свой вопрос! Насколько я знаю, YSlow написан на XUL+JavaScript и работает на стороне клиента; в то время как большая часть кода Perl, связанного с Интернетом, находится на стороне сервера.   -  person Denilson Sá Maia    schedule 20.07.2010
comment
@ Denilson Sá: Я думаю, вы ответили на свой вопрос с помощью YSlow is written in XUL+JavaScript and runs client-side, в конце концов, JavaScript также можно запускать на стороне сервера, но вопрос был задан в контексте другого инструмента. Если вы говорите о чем-то на стороне сервера, я думаю, что у Apache/IIS есть свои собственные сетевые мониторы/статистика, которые можно использовать. Мне действительно нужно что-то на стороне сервера, так как я хотел бы просматривать фактическое время загрузки с разных хостов.   -  person vol7ron    schedule 22.07.2010


Ответы (2)


Вы можете попробовать WWW: :Mechanize::Timed, который расширяет Модуль WWW::Mechanize. Функции ::Timed позволят вам собирать информацию о том, сколько времени занимают ваши запросы. Базовый модуль ::Mechanize, который сам является подклассом LWP::UserAgent, предоставит вам доступ к вашему ответу, включая заголовки, основной текст и изображения. Из них вы можете вычислить общий «вес» страницы, количество запросов и т. д. Это не охватывает всего, что делает YSlow (разоблачение внутренних механизмов DNS, лежащих в основе gethostbyname, было бы хорошим трюком!), но я надеюсь, что это место для начала, если я правильно понял ваш вопрос.

person Ryan M    schedule 20.07.2010
comment
Включает ли ::Timed также нагрузки от операций JavaScript? Я думал, что Mechanize не может обрабатывать инструкции JavaScript, поэтому любые операции AJAX после загрузки или загрузки будут проигнорированы. - person vol7ron; 22.07.2010
comment
Вы правы, он не обрабатывает JavaScript. Mechanize был бы довольно близок к тому, чтобы быть веб-браузером, если бы это было так. Куда вы пойдете отсюда, зависит от того, что вы пытаетесь сделать. Вы пытаетесь анализировать журналы сервера? Запускать автоматические тесты на своих сайтах? Проводите исследования на других сайтах? Вместо того, чтобы заново изобретать YSlow, может быть, вы просто хотите накопить его данные? Вы можете попробовать developer.yahoo.com/yslow/help/beacons.html#yslow_beacon для метода извлечения метрик из YSlow. - person Ryan M; 28.07.2010
comment
После запуска маяков вы можете автоматизировать просмотр URL-адресов с помощью расширения, такого как iMacros или CronZilla. Firefox будет обращаться к указанным вами URL-адресам по указанному вами расписанию, а YSlow (в автоматическом режиме) будет оценивать каждый URL-адрес и сигнализировать ваш сервер сбора данных. Вы можете написать сборщик данных на Perl с одним из множества демонов, таких как Net::Server, который будет получать маяки и обрабатывать их. Не зная больше о вашем проекте, это все, что я могу вам предложить. Удачи! - person Ryan M; 28.07.2010
comment
Я принял этот ответ, но все еще чувствую, что он ограничен. Это в основном для изучения моего сайта и других сайтов для сравнения. - person vol7ron; 06.09.2010

Вы можете запустить Perl CGI (или любую программу на Perl) несколько раз под профилировщиком и просмотреть общие черты. Я не видел такого веб-интерфейса, но если у вас есть контроль над Perl-стороной, документация находится здесь:

http://www.perl.com/pub/a/2004/06/25/profiling.html

В основном это сводится к запуску вашей Perl-программы с параметром -d:DProf, а затем, после ее завершения, к запуску dprofpp в том же каталоге:

# perl -d:DProf ./foo.pl
# dprofpp

Обновлять:

Да, это не то же самое, что профилирование протокола, как должным образом отмечено ниже, но для perl не существует альтернативы. Если вы пытаетесь выяснить, откуда берется часть медлительности perl, профилирование perl — хорошее место для начала. Такие продукты, как YSlow, будут отслеживать его чисто протокольные аспекты, независимо от того, является ли CGI perl, php или python.

Лично я использую его для профилирования моего сайта django, который находится на python и flash, и я профилирую их отдельно от протокольной части системы, для которой я также использую YSlow.

Кроме того, существуют Perl-плагины для "ddd", которые хотя бы сделают его графическим:

http://www.gnu.org/software/ddd/

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

person eruciform    schedule 09.07.2010
comment
Ответ едва ли полезен: профилирование во время выполнения — это не то же самое, что профилирование протокола. - person daxim; 10.07.2010
comment
@daxim: это не то же самое, но это что-то полезное, и я знаю не так много других Perl. если вы хотите быть критичным, по крайней мере, найдите что-нибудь уместное, чтобы добавить. - person eruciform; 10.07.2010
comment
ddd — отладчик; еще один инструмент, который совершенно не подходит для того, что делает YSlow. Что дальше, трекер утечек памяти? - person daxim; 10.07.2010
comment
@daxim: вы можете дать предложенный ответ в любое время. я не буду минусовать твой. - person eruciform; 10.07.2010
comment
Хотя это не совсем то, что я искал, я ценю ответ. Я понимаю, что решений не так много. Возможно, это направит меня в правильном направлении. +1 за попытку - person vol7ron; 14.07.2010
comment
Спасибо! :-) удачи в дальнейших поисках. если вы узнаете из другого источника, я хотел бы услышать об этом. - person eruciform; 14.07.2010