See the assignment turn-in page (last modified on 9 February 2004) for instructions on turning in your assignment.
A web cache is a proxy that sits between a site's browsers (or other requesters of web services) and the site's gateway to the Internet. When the web cache gets an HTTP request, it examines its cache to see if the request can be satisfied by an object in the cache. If it can, the request is flushed and the web cache responds with the object on behalf of the server, reducing external bandwidth and improving the requester's response time.
If the request can't be satisfied, the web cache re-issues the request on behalf of requester. When the server responds, the web cache stores the response object in the cache and then behaves as described in the previous paragraph.
Like all caches, web caches have finite cache space, which means at some point the cache becomes sufficiently occupied that objects of reasonable size can be no longer be cached. When this happens, the web cache uses a replacement policy to determine which, if any, of the cache-resident objects should be removed from the cache to make room for new objects.
Successful caching of any kind depends on adapting to context, particularly access patterns, but also other characteristics related to, for example, the objects being cached and the cache itself. Web-retreived objecs are complex and heterogenuous, which presents a wide range of characteristics, making web caching more difficult.
The complexity of web caching is reflected in the number of cache replacement policies that have been developed. The readings for this assignment (A survey of Web cache replacement strategies by Stefan Podlipnig and Laszlo Boszormenyi, ACM Computing Surveys, December 2003 (vol. 34 no. 4), pages 374-398.) give an overview of the various web-cache replacement policies that have been developed.
There will be some sample web-traffic characterizations in the assignment directory as soon as I can find some.
This report will be the basis for your presentation. The report should be in a generic format, such as plain text, PostScript, or Portable Document Format (pdf). Get in touch with me if you want to use something else.
You should include a makefile among the files you turn in, either for testing or to turn-in. Your makefile should understand two targets: go and clean. The go target should build your assignment. The clean target should delete all unnecessary files. Unnecessary files are any files generated by the makefile itself; such files include the .o files for C++, class files for Java, and any executables built by the makefile.
When you test or turn-in your project, the turn-in script runs (among other things) the following commands:
$ make clean $ make go
You should make sure this works correctly.
See the assignment turn-in page (last modified on 9 February 2004) for instructions on turning in your assignment.
This page last modified on 8 March 2005.