2011-12-26 7 views
1

私はDancerを実行しており、ページが遅くなることがわかりました。ページのレンダリングには長い時間がかかりました。なぜ私はインターネットに接続されていないのに、Perlダンサーのページがゆっくりとレンダリングされますか?

これは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; 

それは、&は(Firefoxで放火犯を使用して)レスポンスをレンダリング得るために、10秒私のブラウザをとります。

そして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

アプリケーションサーバーを起動するコマンドライン引数は何ですか? –

+0

perl dancer.pl#dancer.plがコードの上に格納されています – everbox

+1

コアメッセージがデフォルトで表示されないので、設定ファイルがあると思います。残りの詳細を共有するように気をつけますか? –

答えて

13

コンピュータはインターネットに接続されていますか?私はインターネットに接続されていないコンピュータからテストするときも同じ問題を抱えています。アプリケーションのプロファイリングするために使用Dancer::Plugin::NYTProfmain.tt

+0

ありがとう、それは問題です – everbox

+0

...これは誰にも意味がありますか? – leonbloy

+1

ブラウザはajax.googleapis.comの解決を一時停止し、待機、待機、タイムアウトします。 Firebugまたは同様のクライアント側のツールは、この問題を明らかにしました。 – MkV

2

デバッグログからわかるように、ダンサー0.6msは要求を処理するのに要しました。問題はスタック内のどこか他の場所にあります。頻繁に発生するのは逆DNSです。ウェブサーバーはアクセスログの目的でリモートIPアドレスを逆引きしようとしますが、DNSが誤って構成されていると、失敗するまでにかなりの時間がかかることがあります。

+0

DNS逆引きを無効にするには?ありがとう。 – everbox

1

から

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

を削除することによってそれを修正。ドキュメントから:

このプラグインを読み込むだけで、詳細なヘルプが Devel :: NYTProfによって提供されます。

アプリに対する個別のリクエストがプロファイルされます。あなたのアプリのURL /nytprofに行くと、プロフィールのリストが表示されます。

ブラウザ側の問題の場合は、Firebugのような拡張子を使用して、ページのどの部分が遅いかを確認できます。

+0

問題は、オフライン中のjavascript cdn要求でした。私はこれが必然的にブラウザの振る舞いとして役立つだろうとは思わない。さらに、このソリューションは数年前に公開されました。 –

+0

@Joel Firebugのリンクを追加しました。そのアイデアは決して想定することではありません。他の誰かがその質問を見つけたとしても答えが違うなら、Perlとブラウザの両方をプロファイルする方法を知っているはずです。 –

+1

それでは、私はアンダーダウンしていません。 「OPや将来の読者のためのSOですか?"前後に波打つもので、どちらの答えでも細い線を歩いています。 –

関連する問題