A place where the Joyent community can gather, help each other out, and stay informed.
You are not logged in.
Pages: 1
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
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)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
Pages: 1