lighttpd
lighttpd sits at the front of all requests coming into the system, passing any requests that match a specific regex to the specified proxy and handling all other requests as static file requests that are gzipped and hotcached for delivery to the client.
In the case of Atomictalk, the core files ending in .xml are served statically by lighttpd. There are several key advantages to this approach,
- The index.xml file never changes (well, hardly ever), so the cached index.xml file begins transforming as soon as the conditional GET from the browser returns an unchanged response.
- The index.xml file is gzipped and hotcached directly by lighttpd so the request for *ALL* .xml files that have changed or are accessed for the first time by the requesting browser are served immediately and directly w/o first having to invoke a new request process to Xameleon. Xameleon memcaches the result of all requests to service.op files who's parameters have not changed (or if the service.op file or any related XSLT files hasn't changed) but that still requires a new process to be created and a response returned which takes more time and resources which are not necessary if the file is served directly via lighttpd.
Other files types served directly by lighttpd include,
- Image file formats including *.jpeg, *.jpg, *.gif, and *.png
- CSS files (*.css)
- Javascript files (*.js)
Each of the above referenced files, including *.xml, are gzipped and hotcached by lighttpd which means the average total over-the-wire cost for a new request is < 50k, including images, and each subsequent request will return an "unchanged" response if, in fact, the file has not changed since the last request.
