为什么perl舞者页面缓慢呈现(当我没有连接到互联网时)?

时间:2011-12-26 03:02:27

标签: perl dancer

我正在运行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)。

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

为什么Dancer这么慢?我错过了什么?

3 个答案:

答案 0 :(得分:13)

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

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

来自main.tt

答案 1 :(得分:2)

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

答案 2 :(得分:1)

使用Dancer::Plugin::NYTProf来分析您的应用。来自文档:

  

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

     

对您的应用的每个单独请求进行了分析。转到URL   您应用中的 / nytprof 会显示个人资料列表。

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