| |
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
- HTTP protocol definitions
- Apache documentation (External)
- Apache source (1.3.12)
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]
|