1

我正在运行Dancer,发现它很慢——页面需要很长时间才能呈现。

这是Dancer::Introduction的示例代码:

#!/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 秒来获取和呈现响应(在 firefox 中使用 firebug)。

舞者留言:

[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

为什么舞者这么慢?我错过了什么?

4

3 回答 3

13

电脑是否连接到互联网?从未连接到互联网的计算机进行测试时,我遇到了同样的问题;通过删除修复它

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

main.tt

于 2011-12-26T20:08:12.173 回答
2

从调试日志中可以看出,Dancer 花了 0.6 毫秒来处理请求。问题出在堆栈中的其他地方。一个常见的罪魁祸首是反向 DNS - 网络服务器尝试反向查找远程 IP 地址以进行访问记录,如果您的 DNS 配置错误,则可能需要相当长的一段时间(有时 30 或 60 秒)才会失败。

于 2011-12-26T05:39:06.873 回答
1

使用Dancer::Plugin::NYTProf来分析您的应用程序。从文档中:

只需加载此插件,您将获得由 Devel::NYTProf 提供的详细、有用的分析。

对您的应用程序的每个单独请求都进行了分析。转到应用程序中的 URL /nytprof将显示配置文件列表。

或者,如果是浏览器方面的问题,您可以使用Firebug之类的扩展程序来查看页面加载的哪个部分缓慢。

于 2013-03-03T06:35:23.130 回答