我正在使用 HTML::FormHandler 和我的 mod_perl/Catalyst 应用程序为我的用户生成表单。它工作正常,唯一的问题是它大大减慢了页面加载时间。这是我创建新表单的子例程:
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的代价?如果可以的话,我真的很想继续使用它,因为它使我作为编码员的生活更容易:)
控制器的 Moose 属性中生成窗体,使窗体持久化。这意味着来自上一个请求的信息仍将在表单对象中,并将在下一个请求的开头被清除(或者可以在呈现表单后由程序员清除)。您还必须清除已添加到表单的任何其他属性,或确保在每次"流程"调用中设置这些属性。
在应用调用模块之前,可以使用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;
编辑:
为了加快运行速度,您可以使用记忆来加快速度。
创建一个名为 get_form_handler 的新子并记住其输出。
您甚至可以使用 Cache-FastMmap 一次存储此对象(输出)并在进程之间共享。
问候