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