Да, он будет кэшироваться самим Perl.(Задача mod_perl, касающаяся этой темы, состоит только в том, чтобы переводить сценарии в кэшируемые пакеты и следить за тем, чтобы Perl работал все время, а не выходил, когда ответ завершен.)
Вы должны понимать, как это работаетв различных httpd MPM.Имейте в виду, что процессы имеют независимый% INC.При использовании prefork в следующем примере программы потребуется динамически загружать модуль для каждого нового дочернего элемента.Это означает, что первая пара запросов будет медленнее, чем в среднем, потому что они обрабатываются циклически.Модуль кэшируется до тех пор, пока дочерний объект не выйдет, поскольку он достиг своего максимального порога запросов, после чего каждый новый дочерний элемент должен снова загружаться.
package Foo;
use Apache2::Const -compile => qw(OK);
use Apache2::RequestIO qw();
use Apache2::RequestRec qw();
use Data::Dumper qw(Dumper);
sub handler {
my ($r) = @_;
$r->content_type('text/plain');
$Data::Dumper::Sortkeys = 1;
$r->print(Dumper \%INC);
my $module = 'Template';
eval {
(my $file = $module) =~ s|::|/|g;
require $file . '.pm';
$module->import();
1;
} or die $@;
$r->print(Dumper \%INC);
return Apache2::Const::OK;
}
1;
Обычно рекомендуется оптимизировать производительность, загружая любой модуль, который вы могли быНужно уже при запуске сервера, прежде чем происходит разветвление.Аппаратное обеспечение сервера должно иметь достаточно памяти, чтобы исключить необходимость ленивой загрузки модуля.