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
    #...
}

只需添加一行“ my $form = myapp::Form::Account::Edit->new;”,我的页面加载时间就会从 50 毫秒增加到 500-1000 毫秒。我知道有些人可能会争辩说,一个网站的 500-1000 毫秒页面加载时间仍然不错,但我希望这个网站能够获得高流量,而现在只有一个用户才能加载一个页面需要很长时间。我知道 HTML::FormHandler 很大,因为它使用 Moose,但是在加载一次之后不应该已经加载了吗?有什么办法可以加快这个过程,或者这只是使用 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;

编辑:

要在运行时加快速度,您可以使用memoize来加快速度。

创建一个名为 get_form_handler 的新子并记住它的输出。

您甚至可以使用Cache-FastMmap一次存储此对象(输出)并在进程之间共享。

问候,

于 2013-01-30T08:43:17.000 回答