The Joyent Community

A place where the Joyent community can gather, help each other out, and stay informed.

You are not logged in.

#1 2008-08-18 18:37:51

yourmando
New member
Registered: 2008-08-18
Posts: 3
Expertise

Does this dream reverse proxy/web accelerator exist?

I'm creating a dynamic site where most of the pages change only occasionally. I'm wondering if the follow "dream compression/caching" scenario is possible on any existing reverse proxy. Is there one that can achieve the following scenario?

- Origin web servers have a set of high traffic dynamic pages that change only occasionally. Other pages (could be partition in subdirs) should not be cached.

- These dynamic pages set cache and expires headers allowing browser and proxies to cache the content--say for hours or days. It's ok if users see a slightly stale page within this expiration period.

- Reverse proxy caches these pages as if they were static files. They also create gzipped versions on the fly and cache those. When requests comes in for these specific pages, they are served straight from proxy cache (either compressed or uncompressed depending on request header.)

- When the expiration date is reached, reverse proxy requests fresh pages from the origin server, creates a compressed version, and only servies these pages from cache. Ideally primary cache is in memory and can also leverage the file system and file system cache.

- A certain set of pages shouldn't be cached and will have appropriate headers. They will probably also be in different subdirectories.

- This HTTP 1.1 reverse proxy/web accelerator also provides basic sticky load balancing based in a cookie session id.

Is there any free/open source reverse proxy that can act as a self-updating cache this way? (And even better--the possibility to proactively invalidate the cache. Let's say I change a page on the origin and I want the proxy to refresh that cached page right away.)

Is there anything out there that can do this? Can Big-IP do all of the above? Even so, I'd like to start with a free software solution, then upgrade to Big-IP.

Thank you,
Armando

Offline

 

#2 2008-08-19 22:54:38

yourmando
New member
Registered: 2008-08-18
Posts: 3
Expertise

Re: Does this dream reverse proxy/web accelerator exist?

It looks like there is no all-in-one software load balancer/reverse proxy/web accelerator that can do this.

Another simple option is to have the origin servers do the gzipping/trimming on the fly, then have a simpler web accelerator in front of that that caches based on the headers/expiration date. Then the cpu intensive gzipping/trimming process only runs when the cache is missed or expired.

Varnish can do this, and work with the Vary header to cache both gzipped and non-gzipped versions of the content. But there wasn't a working solaris port--until now:

http://varnish.projects.linpro.no/timeline

Changeset 3113

Timestamp:

2008-08-19 23:34:16 (1 hour ago)
Author: phk
Message: Integrate Solaris patches, with a bit of polishing. Don't look for umem on FreeBSD, which have dummy stub version for dtrace or ZFS compatibility. Generally restrict probes for Solaris specific stuff to when we run on solaris, no need to make configure slower than it is. Don't pretend we can get anywhere without poll(2) we use it for lots of things: Remove #if conditionals around poll-acceptor. Sort a couple of lists, before they get too unsorted. Submitted by: Theo Schlossnagle

Theo added a Solaris event ports implementation to varnish.

So we can do:

varnish -> reverse-proxy sticky lb (nginx, etc) -> origin web server

Or:

Big-IP -> varnish -> origin

I believe Joyent will create a wiki page soon about using varnish on Solaris.

Cheers,
Armando

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson