X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FWWW.pm;h=2434f2f581b2b0fbd1d48d1a08881bf0a1c1187b;hb=31ec75b69e02df6330bc16dd2bd48d354726f4c1;hp=02b5ded32e9a2950508ef39ef5d7697603eebf1b;hpb=bf4d35dd2f6389e9aa4dc87fdfaef801fa5b9108;p=public-inbox.git
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 02b5ded3..2434f2f5 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2019 all contributors
+# Copyright (C) 2014-2020 all contributors
# License: AGPL-3.0+
#
# Main web interface for mailing list archives
@@ -19,7 +19,6 @@ use PublicInbox::Config;
use PublicInbox::Hval;
use URI::Escape qw(uri_unescape);
use PublicInbox::MID qw(mid_escape);
-require PublicInbox::Git;
use PublicInbox::GitHTTPBackend;
use PublicInbox::UserContent;
use PublicInbox::WwwStatic qw(r path_info_raw);
@@ -133,31 +132,47 @@ sub call {
}
}
-# for CoW-friendliness, MOOOOO!
+# for CoW-friendliness, MOOOOO! Even for single-process setups,
+# we want to get all immortal allocations done early to avoid heap
+# fragmentation since common allocators favor a large contiguous heap.
sub preload {
my ($self) = @_;
+ require PublicInbox::ExtMsg;
require PublicInbox::Feed;
require PublicInbox::View;
require PublicInbox::SearchThread;
require PublicInbox::MIME;
- require Digest::SHA;
- require POSIX;
+ require PublicInbox::Mbox;
+ require PublicInbox::ViewVCS;
+ require PublicInbox::WwwText;
+ require PublicInbox::WwwAttach;
eval {
require PublicInbox::Search;
PublicInbox::Search::load_xapian();
};
- foreach (qw(PublicInbox::SearchView
- PublicInbox::Mbox IO::Compress::Gzip
- PublicInbox::NewsWWW)) {
+ foreach (qw(PublicInbox::SearchView PublicInbox::MboxGz)) {
eval "require $_;";
}
if (ref($self)) {
+ my $pi_config = $self->{pi_config};
+ if (defined($pi_config->{'publicinbox.cgitrc'})) {
+ $pi_config->limiter('-cgit');
+ }
$self->cgit;
$self->stylesheets_prepare($_) for ('', '../', '../../');
$self->www_listing;
+ $self->news_www;
+ $pi_config->each_inbox(\&preload_inbox);
}
}
+sub preload_inbox {
+ my $ibx = shift;
+ $ibx->cloneurl;
+ $ibx->description;
+ $ibx->base_url;
+}
+
# private functions below
sub r404 {