Sounds like a badly broken application to me.  If the data is truly
cacheable, the application shouldn't be taking explicit steps to try to
prevent just that.  Depending on what the backend system is, you might
be better off using some kind of a filter to just remove that killCache
parameter in the body text before it gets to the client.  Then, you
don't have to worry about it at all.



Thanks,

Rick Houser
Auto-Owners Insurance
Systems Support
(517)703-2580

-----Original Message-----
From: Anthony J. Biacco [mailto:abia...@formatdynamics.com] 
Sent: Thursday, March 19, 2009 3:36 PM
To: modules-dev@httpd.apache.org
Subject: rewrite before caching?

I posted this on the users list, but didn't get any help, so I'm hoping
the dev people here can either help or at least explain if what I'm
seeing below is how it's meant to work..

I have a uri with cachebusting in it that looks like this:
/path?killCache=x&parameter1=y%parameter2=z
where x is a unix timestamp used to make sure the url isn't cached by
the browser.

Now though I want to use apache disk caching on this url. Obviously with
the killCache parameters always changing though, this is futile. And I
can't ignore the query string with CacheIgnoreQueryString because
parameter1 and parameter2 are important to the output to the end-user,
so the cache would be inconsistent if I had caching ignore the query
string.

So I decided to rewrite the url to remove the killCache parameter, and
while this rule itself works fine (I'm rewriting to a path not a full
url), it seems the cache check is done before the rewrite.

My rule is:

RewriteCond %{QUERY_STRING}
^killCache=(.+)\&parameter1=(.+)\&parameter2=(.+)
RewriteRule ^/path /path?parameter1=%2&parameter2=%3 [L]

And in the log I see:

 [Wed Mar 18 12:02:47 2009] [debug] mod_cache.c(131): Adding CACHE_SAVE
filter for /path [Wed Mar 18 12:02:47 2009] [debug] mod_cache.c(138):
Adding CACHE_REMOVE_URL filter for /path [Wed Mar 18 12:02:47 2009]
[debug] mod_headers.c(740): headers:
ap_headers_output_filter()
mod_cache.c(639): cache: Caching url:
/path?killCache=x&parameter1=y&parameter2=z
[Wed Mar 18 12:02:47 2009] [debug] mod_cache.c(645): cache: Removing
CACHE_REMOVE_URL filter. 
[Wed Mar 18 12:02:47 2009] [debug] mod_disk_cache.c(962): disk_cache:
Stored headers for URL
http://myhost/path?killCache=x&parameter1=y&parameter2=z
[Wed Mar 18 12:02:47 2009] [debug] mod_disk_cache.c(1051): disk_cache:
Body for URL http://myhost/path?killCache=x&parameter1=y&parameter2=z
cached.

And I get a different cache file stored for every value of the parameter
killCache.

Anybody know a way to get the rewriterule processed before the cache
mechanism? I can rewrite to a full url and the new request will then
pull from cache, but that induces an extra request and an extra log
entry, which I'd like to avoid if at all possible.

Thanx,

-Tony
---------------------------
Manager, IT Operations
Format Dynamics, Inc.
303-573-1800x27
abia...@formatdynamics.com
http://www.formatdynamics.com



Reply via email to