Server-side caching optimisations for the Apache web server

By Simon Geard.
Supervisor: S. Manoharan
 
Last updated: 10 Oct 2005

Aims

This project aims to provide a caching facility for server-side scripting functions used by the Apache HTTP server.

  • Initially, the project will focus on the SHTML functions provided by the mod_include module included with the standard Apache distribution.
  • Once the mechanism is in place for server-side caching, it should not be difficult to allow client-side caching as well.

Progress

  • Gained an advanced knowledge of SHTML, so that I know what kind of situations are likely.
  • Studied the mod_include source in detail, so I know where modifications will be needed to implement caching.
  • Identified a set of rules for the handling of each SHTML directive.
  • Completed a design for the caching system, which is defined in the first-semester report.
  • Completed a simplified version of the module. This version is similar to a plugin for Microsoft's IIS, in that it will use cached data if available, but will not do complex checking, and will not regenerate the cache.
  • Completed a more advanced version of the previous module. This version performs full dependency checking, but is still incapable of regenerating the cache. Stage 3, using Apache 2.0, will be the complete version.
  • Due to the inavailability of a bug-free 2.0 release, reverted to Apache 1.3.12, implementing Stage 3 as a hack - less elegant, less efficient, but functional.

At present

Work done on 2.0 has proved fruitless. 2.0a6 was usable, and Stages 1 and 2 were successfully implemented. Unfortunately, this version still lacked the desired capability, and had stability problems which made performance testing impossible.

2.0a7 showed promise - the new implementation of the module structure has the capability I need. Unfortunately, this version was only released on Oct 8 - too late to be of much use. Worse, the version of mod_include it contained was very buggy, having been quickly changed to use the the new module structure. Apache developer Ryan Bloom reports that he's in the process of debugging it.

As a result, I've gone back to my 1.3 code, implemented Stage 3 as a hack, and spent some time optimising it. Performance comparisons look promising.

Information sources

Resources

Note - these are compressed using gzip.
  • Introduction seminar [ PPT]
  • First-semester seminar [ PPT]
  • Final seminar [ PPT]
  • First-semester report [ PDF]
  • Final report [ PS]
  • Code [ Directory, Archive]

Page maintained by Simon Geard
sgea003@ec.auckland.ac.nz
Last modified
10 Oct 2005 09:51