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.6msかかりました。問題はスタックのどこかにあります。よくある原因は逆引き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 に答える