16.5 Avoiding Dealing with Headers
There is another approach to
dynamic
content that is possible with mod_perl. This approach is appropriate
if the content changes relatively infrequently, if we expect lots of
requests to retrieve the same content before it changes again, and if
it is much cheaper to test whether the content needs refreshing than
it is to refresh it.
In this situation, a PerlFixupHandler can be
installed for the relevant location. This handler must test whether
the content is up to date or not, returning
DECLINED so that the Apache core can serve the
content from a file if it is up to date. If the content has expired,
the handler should regenerate the content into the file, update the
$r->finfo status and still
return DECLINED, which will force Apache to serve
the now updated file. Updating $r->finfo can be
achieved by calling:
$r->filename($file); # force update of the finfo structure
even if this seems redundant because the filename is the same as
$file. This is important because otherwise Apache
would use the out-of-date finfo when generating
the response header.
|