[DESIRE] [DESIRE Webcache] [Webcache Architecture]

1 Introduction

Drawing on the experiences in the EC 4th Framework Project DESIRE, funded by the European Union, this document identifies some of the pitfalls and possibilities of building webcaching meshes. This document gives guidelines and outlines strategies for building a functional webcaching system with co-operating web caches.

The architecture of a webcaching mesh is highly depending on the network topology and the cost factors of the network.

The emphasis is on building Internet Service Provider (ISP) wide caching systems, but architectural considerations for inter-network agreements on webcaching is discussed and examples of policies for international webcaching agreements are given. The impact of webcaching as a routing issue is discussed.

First several basic requirements for hardware used on web caching servers, giving general advice and pointers to several hardware suppliers.

Second we will look into several criteria for chosing web caching server software and discuss why Squid has been chosen as the primary server software. Then the importance of web browser (client) configuration is discussed. Criteria for location of web caching servers and the importance of network topology and traffic flow are discussed. The main part of the paper is focused on how to build and join a ISP-wide webcaching mesh, providing examples and listing alternative approaches to the architecture of a mesh.

1.1 Terminology

In this document a number of terms are used to refer to the roles played by participants in, and objects of, the HTTP communication. The next definitions are used in the HTTP/1.1 specification [HTTP/1.1] :

client
An application program that establishes connections for the purpose of sending requests. These are often browsers, editors, spiders (web-traversing robots), or other end user tools.
server
An application program that accepts connections in order to service requests by sending back responses.
origin server
The server on which a given resource resides or is to be created.
proxy
An intermediary program which acts as both a server and a client for the purpose of making requests on behalf of other clients. Requests are serviced internally or by passing them, with possible translation, on to other servers. A proxy MUST interpret and, if necessary, rewrite a request message before forwarding it. Proxies are often used as client-side portals through network firewalls and as helper applications for handling requests via protocols not implemented by the user agent.
cache
A program's local store of response messages and the subsystem that controls its message storage, retrieval, and deletion. A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent requests. Any client or server MAY include a cache, though a cache cannot be used by a server while it is acting as a tunnel.

Web clients request documents from web servers, either directly or through a web cache server or proxy. A web cache server has the same functionality as a web server, when seen from the client and the same functionality as a client when seen from a web server. The primary function of a web cache server is to store web documents close to the user, to avoid pulling the same document several times over the same connection, reduce download time and create less load on remote servers.

Caching is used in two forms in the Web. The first is a local cache, which is built into a Web browser. A Web client with caching stores not only the documents currently displayed in browser windows, but also documents requested in the past. This local cache is also used for (temporary) storage of the history. There are two forms of client caches: persistent and nonpersistent. A persistent client cache retains its documents between invocations of the Web browser; Netscape uses a persistent cache. A nonpersistent client cache (used in Mosaic) deallocates any memory ordisk used for caching when the user quits the browser. Per-client caches may maintain consistency of cached files with server copies by issuing an optional If-Modified-Since GET to the HTTP server or proxy server.

The second form of caching is in the network used by the Web (i.e., the caching proxy mentioned earlier). The cache is located on a machine on the path from multiple clients to multiple servers. Normally a caching proxy is not on a machine that runs a Web client or an HTTP server. The caching proxy caches URLs generated by multiple clients. It is possible to use caching proxies hierarchically, so that caching proxies cache URLs from other caching proxies. In this case the caches can be identified as first level caches, second level caches, and so on. A hierarchical arrangement is only one possible configuration; Smith gives a nonhierarchical arrangement of large national and international caching proxies.

caching mesh
a set of cooperating caching servers
local web cache server
caching server running on the same LAN as a client
first level web cache server
the web cache server an end user client connect to
upper level web cache server
seen from the clients view, all caches participating in the caching mesh that are not the clients first level cache are upper level caches
top-level web cache server
one or more servers in a hierarchical caching mesh, normally few requests are made to other caching servers from the top level, serves first level web cache servers

Web caching servers may co-operate in a mesh where they share load and distribute requests. A webcaching server in a mesh may pass a unfulfilled request on to another webcaching server.

The simplest mesh is two servers strung after another, if a request is not answered on the first cache server, it is passed on to the second and then on to the web server. Another way is to build a network of servers that have different relations to one another, this may be done by the help of the Internet Cache Protocol, ICP [ICP-draft]. ICP passes messages among web cache servers.


The introduction of World Wide Web has changed the view of the user community to the network in respect to accessibility and user friendliness. With the Web the user is able to look for and retrieve all kind of information from the network without having any knowledge of the network. From the user point of view it does not matter if the information he is looking for, e.g. a video clip with sound effects, is on a computer in the next room or on the other side of the world. This leads to an enormous grow of traffic on the local, national and international network backbone. Because the use of the Web is growing exponentially it is to be expected that the WWW traffic on the national and international networks will grow also exponential with raising latency. Nevertheless the user expects a high quality of service with modest response times.

The quality of service and the response times can be improved by decreasing the network load. One way to achieve this is to install a Web caching service. Caching effectively migrates copies of popular documents from Web servers closer to the Web clients. In general, Web client users see shorter delays when requesting a URL, network managers see less traffic and Web servers see lower request rates.

There is a certain urgency which may be deduced from network usage graphs, which show HTTP traffic increasing with a faster exponential growth rate than total Internet traffic. In 1995 the HTTP traffic has become a significant proportion of the total, and so web growth is pushing network upgrades, causing performance degradation, and itself being slowed by network limitations. [Berners-Lee].

However, the use of caches introduces two main problems: how do we ensure that the caches return the “correct” values, and how do we obtain the best possible performance. In general, there may be a trade-off between how “correct” the returned values are, and how effectively the caches perform. We will avoid using the word "correct" and use the specific term "semantic transparency". A cache is "semantically transparent" to indicate if a Web client cannot tell that it exists, except for the speed at which documents are delivered [Mogul].


Maybe it's a good idea to add a 'definition and terminology' section right behind the introduction? For instance, terms that could be explained in more detail: What is actually a caching mesh? (this term is only informally introduced in the introduction, but maybe we can describe a caching mesh simply as a set of cooperating caching servers?) what is a (web) client? (but this is already defined in deliverable D4.1, so this definition can be reused). And ... What is a LOCAL web cache? (A caching server running on the same LAN as a client?). What is a FIRST LEVEL web cache? (What is exactly the difference from a local web cache?). What is a TOP-LEVEL web cache? (Has something to do with the boundary of an ISP, isn't it, or can it be expressed in terms of parent relationships (I think not)). For instance, both the norwegian as well as the SURFnet caching server are in my feeling top-level web caches, although they are each others parents, or am I wrong? I suppose that an UPPER level web cache is any web cache that is not a first level web cache (this is quite intuitive of course).

Other Caches and Papers
If you're interested in comparing this implementation to others currently available, a few pointers are provided:

Other initiatives
Some links to other Web caching initiatives around the world are:

RFC's, Internet-Drafts, and protocol stuff

Web sites, notes, lists

Articles, Tech Reports, Conference Proceedings

Mailing lists, archives


articles, papers and reports

A Hierarchival Internet Object Cache (in postscript)
Peter Danzig
Web-Proxy Server
Duane Wessels
A Caching Relay for WWW
Steven Glassman, DEC
Caching Proxies: Limitations and Potentials
Marc Abrams, Charles R. Standridge, Ghaleb Abdulla, Stephen Williams, Edward A. Fox
A Simple Yet Robust Caching Algorithm
James E. Pitkow and Margaret M. Recker
WWW Cache Briefing
Alan J. Flavell
Load balancing, mirror sites and meshes of servers
Martin Hamilton
If-Modified-Since proposal on www-talk
NLANR Cache Status Report, Mar 28, 1996
Duane Wessels
DESIRE survey on caching
Henny Bekker, Ingrid Melve, Ton Verschuren
Proxy Cache - Van-Pool for the Web
A.Daviel, Vancouver Webpages
Web Caching
Andrew Cormack, University of Wales, Cardiff, September 1996
A WWW Proxy/Cache can be used for a number of purposes. At Manchester it has been provided as a way of presenting WWW pages as speedily as possible. By making use of the Proxy/Cache, pages that have already been accessed, are available locally, rather than having to go to the actual site, say in the US.

Caching, introduction for libraries Jon Knight and Martin Hamilton

Woj's links to caching info

Recommended Reading

Quick Introduction to WWW Caching, Martin Hamilton


Ingrid Melve, Henny Bekker
Last modified: Mon Jan 27 14:05:39 1997