Почему страницы Perl Dancer отображаются медленно (пока я не подключен к Интернету)? - PullRequest
1 голос
/ 26 декабря 2011

Я бегу Dancer и нашел его медленным - рендеринг страниц занимал много времени.

Это пример кода из Dancer :: Введение :

#!/usr/bin/perl
# make this script a webapp
use Dancer;
# declare routes/actions
get '/' => sub {
    "Hello World";
};
get '/hello/:name' => sub {
    "Hello ".param('name');
};
# run the webserver
Dancer->dance;

Мой браузер получает 10 секунд, чтобы получить и обработать ответ (используя firebug в firefox).

И Dancer сообщение:

[20734]  core @0.000228> request: GET / from 192.168.1.101 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Handler.pm l. 57
[20734]  core @0.000809> [hit #44]trying to match `/' against /^\/$/ in /usr/lib/perl5/site_perl/5.8.8/Dancer/Route.pm l. 84
[20734]  core @0.000953> [hit #44]  --> got 1 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Route.pm l. 101
[20734]  core @0.001645> [hit #44]response: 200 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Handler.pm l. 175
[20734]  core @0.000135> request: GET /favicon.ico from 192.168.1.101 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Handler.pm l. 57
[20734]  core @0.000873> [hit #45]response: 200 in /usr/lib/perl5/site_perl/5.8.8/Dancer/Handler.pm l. 175

Почему Танцор такой медленный?Я что-то пропустил?

Ответы [ 3 ]

13 голосов
/ 27 декабря 2011

Подключен ли компьютер к интернету? У меня такая же проблема при тестировании с компьютера, не подключенного к интернету; исправил, удалив

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>;

от main.tt

2 голосов
/ 26 декабря 2011

Как видно из журнала отладки, для обработки запроса Dancer потребовалось 0,6 мс. Проблема где-то еще в стеке. Частым виновником является обратный DNS - веб-сервер пытается выполнить обратный поиск удаленного IP-адреса для целей регистрации доступа, и, если ваш DNS настроен неправильно, это может занять некоторое время (иногда 30 или 60 секунд), прежде чем он выйдет из строя.

1 голос
/ 03 марта 2013

Используйте Dancer :: Plugin :: NYTProf для профилирования вашего приложения. Из документации:

Просто загрузив этот плагин, вы получите подробную, полезную профилирование предоставлено Devel :: NYTProf.

Профилируется каждый отдельный запрос к вашему приложению. Переход на URL / nytprof в вашем приложении представит список профилей.

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

...