我正在运行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这么慢?我错过了什么?
答案 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之类的扩展来查看网页加载的哪个部分很慢。