I'm trying to write a plugin which will decide weather or not to use cache
based weather or not a user is logged in. This is what I have come up with
so far:
-------------------
package Apache::AxKit::Plugin::VBTNUserCache;
use strict;
use Apache::Request;
use Apache::Constants qw(OK);
use Apache::AxKit::Plugin::Session;
use Apache::AxKit::Cache;
sub handler {
my $r = shift;
my $session = Apache->request->pnotes ("SESSION");
return OK unless ($$session{'vbtn_access_user'});
$r->no_cache(1);
return OK;
}
----------------------
So I check to see if a user is logged in. If not, I return OK and the
cached content is delivered (AxNoCache is set to Off in httpd.conf)...
Great. However, if a user is logged in, I attempt to turn off cache by
$r->no_cache(1); - This does not seem to work... Is this being overriden
later on by some AxKit internals I am not aware of? Is it even possible to
turn off cache from within a plugin?
A workaround I came up with was to append the username to the
'axkit_cache_extra' variable:
I replaced $r->no_cache(1);
with
$r->notes('axkit_cache_extra', $r->notes('axkit_cache_extra') .
$$session{'vbtn_access_user'});
which means that every user has his/her own individual set of cache
files... This is not goos since I have over 25000 registered users on the
site and each one has his own cache file for every page... well, thats a
lot of cache files.
All I want to do is make guest users get there contet from the cache, and
loged in users gererate their contet on the fly (because I like to
customise each page to the user).
help appreciated (again!)
thanks
--
Tom Kirkpatrick
Web Developer - Virus Bulletin