That's great. Thank you Adam.
Adam Prime wrote:
If the database doesn't change very often, and you don't mind only
getting updates to your database when you restart apache, and you're
using prefork mod_perl, then you could use a startup.pl to load your
database before apache forks, and get a shared copy globally in all your
apache children.
https://perl.apache.org/docs/1.0/guide/config.html#The_Startup_File
This thread from 13 years ago seems to have a clear-ish example of how
to use startup.pl to do what i'm talking about.
If you need it to update more frequently than when you restart apache,
you could potentially use a PerlChildInitHandler to load the data when
apache creates children. This will use more memory, as each child will
have it's own copy, and can also result in situation where children can
have different versions of the database loaded and be serving requests
at the same time. If you want to go this way you might want to also add
a MaxRequestsPerChild directive to your apache config to make sure that
you're children die and get refreshed on the regular, if you don't
already have one.
Adam
On 9/13/2020 10:51 PM, Wesley Peng wrote:
Hello
I am not so familiar with modperl.
For work requirement, I need to access IANA TLD database.
So I wrote this perl module:
https://metacpan.org/pod/Net::IANA::TLD
But, for each new() in the module, the database file will be
downloaded from IANA's website.
I know this is pretty Inefficient.
My question is, can I cache the new'ed object by modperl?
If so, how to do?
Thanks.