The Hypertext Transfer Protocol (HTTP) is used to transfer data between Web servers (e.g. Apache) and Web clients (e.g. Netscape Navigator). Currently, the majority of clients and servers use HTTP/1.0. Although early and partial, HTTP/1.1 deployment has already begun. HTTP typically comprises a large fraction of Internet traffic; at times up to 80% of the traffic on some wide-area backbone links in the U.S.
An HTTP request is comprised of three major parts: a request method, a Uniform Resource Locator (URL), and a set of request headers. An HTTP reply consists of a numeric result code, a set of reply headers, and an optional reply body. The most common request method is GET, which is a request to retrieve the resource named by the URL. A GET request is essentially a download operation. Another commonly used request method is POST, which is essentially an upload operation.
A special kind of GET request is a conditional GET, distinguished by its use of an If-Modified-Since header, and whose reply depends upon the modification date of the resource compared to the date provided in this If-Modified-Since header. For brevity, we'll refer to this as an IMS request. IMS is an important feature for caching, as it can save a lot of bandwidth and latency by having the server send only a small Not Modified response if the client already holds a current copy of the resource. If the resource has changed since the IMS timestamp, the cache receives a new version from the server.
The HTTP/1.1 Cache-control header allows both clients and servers to ``override the default caching algorithms.'' We are primarily interested in the Max-age directive, which lets the client place an upper limit on how old an object can be and still satisfy the request without refreshing the document from the source. Here age refers to the elapsed time since the origin server provided the data. If the cached object is older than the client requires, then the cache must forward the request to the origin server.
World-Wide Web caches are implemented as proxies. Normally Web clients (browsers) make direct connections to Web servers. However, client browsers may instead be configured to connect to a proxy server, which then forwards the request on behalf of the client. For this reason, Web caching is also occasionally referred to as proxy caching, although not all proxies are caches. Sometimes proxies function only as a gateway between two sides of an Internet firewall, and do not retain copies of any objects in the process. Caching implies proxying, but proxying does not imply caching.
Because the proxy is passing Web requests from servers to clients, there is strong benefit for the proxy to cache popular requests locally. The proxy users benefit because they receive cached documents more quickly. Additionally, the organization itself benefits by reducing the amount of traffic imposed on its wide-area Internet connection. By deploying Web caches, an organization will typically reduce its HTTP traffic by 30--50%.
Cache Hierarchies are a logical extension of the caching concept. A group of Web caches can benefit from sharing another cache in the same way that a group of Web clients benefit from sharing a cache. However, there are some disadvantages as well. Whether the advantages outweigh the disadvantages probably depends on the specific situation. The main advantages are:
Among the disadvantages: