Apache::AxKit::Plugin::QueryStringCacheRegexp - Cache based on QS and


Apache-AxKit-Plugin-QueryStringCacheRegexp documentation Contained in the Apache-AxKit-Plugin-QueryStringCacheRegexp distribution.

Index


Code Index:

NAME

Top

Apache::AxKit::Plugin::QueryStringCacheRegexp - Cache based on QS and regular expression matching

SYNOPSIS

Top

  SetHandler axkit
  AxAddPlugin Apache::AxKit::Plugin::QueryStringCacheRegexp
  PerlSetVar AxQueryStringCacheRegexpUse    '\w{2,15}'
  PerlSetVar AxQueryStringCacheRegexpIgnore 'foo.*'

DESCRIPTION

Top

This module is a replacement for Apache::AxKit::Plugin::QueryStringCache. It offers the following at the expense of a little overhead:

The querystring is "taken apart", the parameters are matched against a positive (use) and a negative (ignore) pattern, both to be specified in httpd.conf. A changed order of parameters, old (&) vs. new-style (;) delimiters or multiple occurances of the same parameter will not force AxKit to retransform a document.

Parameters taken into account will have to match the use-pattern and not match the ignore-pattern (if given).

Setting AxDebugLevel 7 or greater prints some debug-info to the log.

PerlSetVar AxQueryStringCacheRegexpUse '^\w{2,15}$'

Takes a perl regular expression; ^\w+$ is used if omitted.

PerlSetVar AxQueryStringCacheRegexpIgnore '^foo.*'

Takes a perl regular expression; No negative matching is made if omitted.

In this example above, one defines all parameters of 2 to 15 alphanumeric characters which do not begin with "foo", as significant for the cache.

BUGS/FEATURES

Top

None known at this time.

SEE ALSO

Top

Apache::AxKit::Plugin::QueryStringCache

http://www.axkit.org/

http://www.axkitbook.com/

AUTHOR

Top

Hansjoerg Pehofer, <hansjoerg.pehofer@uibk.ac.at>

COPYRIGHT AND LICENSE

Top


Apache-AxKit-Plugin-QueryStringCacheRegexp documentation Contained in the Apache-AxKit-Plugin-QueryStringCacheRegexp distribution.

# $Id: QueryStringCacheRegexp.pm,v 1.12 2006/08/07 14:12:06 c10232 Exp $
package Apache::AxKit::Plugin::QueryStringCacheRegexp;

use strict;
use Apache::Constants qw(OK);
use Apache::Request;

our $VERSION = '0.04';

sub handler {
    my $r = shift;
    my $cache_extra;

    # An extra bend to correctly make multiple-valued CGI-Parameters
    # significant by concatenating them. (The whole exercise is to
    # create a "axkit_cache_extra"-string that depends as little as
    # possible on how the QueryString "looks"; i.e. the order of the
    # parameters should not be significant unless there are multiple
    # occurences of the same key)
    my @args = $r->args();
    my %args;
    while (@args) {$args{ shift(@args) } .= shift(@args);}
    
    my $use = $r->dir_config('AxQueryStringCacheRegexpUse') || '^\w+$';             #'
    my $ignore = $r->dir_config('AxQueryStringCacheRegexpIgnore') || undef;

    foreach (sort keys %args) {
        if ( length $_ && /$use/ && ( (not defined $ignore) || (not /$ignore/) ) ) {
            $cache_extra .= $_ . "=" . $args{$_} . ";";
        }
    }

    AxKit::Debug(7, "[QueryStringCacheRegexp] QueryString in: " . $r->args . " significant for caching: $cache_extra");

    $r->notes('axkit_cache_extra', $r->notes('axkit_cache_extra') . $cache_extra);

    return OK;
}

1;
__END__