1

mod_perl / CatalystアプリでHTML::FormHandlerを使用して、ユーザー用のフォームを生成しています。問題なく動作しますが、唯一の問題は、ページの読み込み時間が大幅に遅くなることです。新しいフォームを作成するサブルーチンは次のとおりです。

sub edit : Chained('base') PathPart Args(0) {
    my ( $self, $c ) = @_; 

    my $form = myapp::Form::Account::Edit->new;

    #validation stuff, etc
    #...
}

" " という 1 行を追加するだけでmy $form = myapp::Form::Account::Edit->new;、ページの読み込み時間が 50 ミリ秒から 500 ~ 1000 ミリ秒に短縮されます。サイトの 500 ~ 1000 ミリ秒のページ読み込み時間はまだ良いと主張する人もいるかもしれませんが、私はこのサイトが大量のトラフィックを獲得することを期待しています。Moose を使用しているため、HTML::FormHandler が大きいことは知っていますが、一度読み込まれた後は、既に読み込まれているはずではありませんか? これにかかる時間を短縮する方法はありますか、それとも HTML::FormHandler を使用するだけの代償ですか? コーダーとしての私の生活がずっと楽になるので、できれば使い続けたいです:)

4

2 に答える 2

3

コントローラーの Moose 属性でフォームを作成して、フォームを永続化することもできます。これは、最後のリクエストからの情報がフォーム オブジェクトに残り、次のリクエストの開始時にクリアされることを意味します (または、フォームがレンダリングされた後にプログラマによってクリアされる可能性があります)。また、フォームに追加した追加の属性をクリアするか、すべての「プロセス」呼び出しでそれらが設定されていることを確認する必要があります。

于 2013-02-05T17:11:41.907 に答える
1

アプリがモジュールを呼び出す前に、mod_perl を使用してモジュールをロードできます。

http://www.conceptsolutionsbc.com/perl-articles-mainmenu-41/29-perl-and-apache/55-modperl-part-2-pre-loading-perl-modules

#put his to apache config file:
PerlModule HTML::FormHandler;

編集:

runtuime で処理を高速化するには、 memoizeを使用して処理を高速化できます。

get_form_handler という名前の新しいサブを作成し、その出力をメモします。

Cache-FastMmapを使用して、このオブジェクト (出力) を一度に保存し、プロセス間で共有することもできます。

よろしく、

于 2013-01-30T08:43:17.000 に答える