You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Fabio Salvi <fa...@kyneste.com> on 2003/01/29 11:42:35 UTC

Ap..cache

Hi all,

recently I've been thinking about a way to implement a cache mechanism in Apache-Tomcat interaction (e.g. ajp13). I'd be really grateful if you gave me some suggestions or advice on the matter. Below I shortly describe what I've built as a kind of prototype.

To sum up, I've modified mod_jk (win2000) in some points in order to make it cache-aware. I've introduced in httpd.conf the following directives:

#
# normal jk directives
#
JkMount /*.jsp ajp13

#Cache extensions
JkCache on
JkCacheDirectory C:\cache

This is, basically, the collaboration diagram I've implemented:

·	mod_jk intercepts request for /pippo/cachetest.jsp;
·	mod_jk asks Tomcat, at the moment actually a WebApp controller, for a list of dirty items in cache folder;
·	then, mod_jk deletes dirty-bit pages in the cache;
·	now mod_jk manages current request. If it finds the page in the cache it returns static file to Apache.
·	Otherwise it requires the resource back to the WebApp controller. The latter knows if the page is to be cached and 	puts a special tag on the byte stream in response, after having dynamically built it;
·	mod_jk receives the response and if it does contain the above mentioned tag, mod_jk writes it in the cache folder 	before sending it to Apache. If there's a query string, it'll include it in the static resource name.

The second and third steps are an overload respect to normal interaction, but that permits to save a lot of elaborating time and network roundtrips when you ask for a very heavy resource (e.g a jsp which loads many non-volatile and quite stable data from a db).
All that seems to work fine...According to your opinion is a worth-to-develop idea?

Thanks in advance for your advise!
Fabio

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


RE: Ap..cache

Posted by Martin Algesten <pu...@taglab.com>.
Fabio,

We're achieving a good cache result by using mod_proxy and its built in
proxy cache.

We have:
Front servers that do caching and backservers that runs the tomcat.

The fron servers runs apache and mod_proxy. Any request coming in to
example www.foo.com/index.jsp is proxied through to the back hosts where
another apache is listening on port 80. The apache on the back host uses
mod_jk to connect to Tomcat which serves the page.

mod_proxy on the fron hosts has a proxy cache which can be used to cache
our jsp pages. There are some simple rules to follow when you want a jsp
to be cached in a generic web cache (see HTTP protocol for details on
web caches).

We got it sorted so that a request that comes into the front hosts, will
only result in a revalidation (If-Modified-Since) to the back hosts. The
jsp page can be coded to deal with this type of request and can then
tell the front hosts to serve the cached page or return a new one.

Martin



> -----Original Message-----
> From: Fabio Salvi [mailto:fabio.salvi@kyneste.com] 
> Sent: 29 January 2003 10:43
> To: tomcat-dev@jakarta.apache.org
> Subject: Ap..cache
> 
> 
> Hi all,
> 
> recently I've been thinking about a way to implement a cache 
> mechanism in Apache-Tomcat interaction (e.g. ajp13). I'd be 
> really grateful if you gave me some suggestions or advice on 
> the matter. Below I shortly describe what I've built as a 
> kind of prototype.
> 
> To sum up, I've modified mod_jk (win2000) in some points in 
> order to make it cache-aware. I've introduced in httpd.conf 
> the following directives:
> 
> #
> # normal jk directives
> #
> JkMount /*.jsp ajp13
> 
> #Cache extensions
> JkCache on
> JkCacheDirectory C:\cache
> 
> This is, basically, the collaboration diagram I've implemented:
> 
> .	mod_jk intercepts request for /pippo/cachetest.jsp;
> .	mod_jk asks Tomcat, at the moment actually a WebApp 
> controller, for a list of dirty items in cache folder;
> .	then, mod_jk deletes dirty-bit pages in the cache;
> .	now mod_jk manages current request. If it finds the 
> page in the cache it returns static file to Apache.
> .	Otherwise it requires the resource back to the WebApp 
> controller. The latter knows if the page is to be cached and 	
> puts a special tag on the byte stream in response, after 
> having dynamically built it;
> .	mod_jk receives the response and if it does contain the 
> above mentioned tag, mod_jk writes it in the cache folder 	
> before sending it to Apache. If there's a query string, it'll 
> include it in the static resource name.
> 
> The second and third steps are an overload respect to normal 
> interaction, but that permits to save a lot of elaborating 
> time and network roundtrips when you ask for a very heavy 
> resource (e.g a jsp which loads many non-volatile and quite 
> stable data from a db). All that seems to work 
> fine...According to your opinion is a worth-to-develop idea?
> 
> Thanks in advance for your advise!
> Fabio
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org