Optimizing Hierarchies

Remember that a primary motivation for cache hierarchies is to find cache hits in your neighbors. Usually, a cache uses one of the intercache protocols described in Chapter 8 to predict neighbor hits. In some cases, though, we can identify requests that could not possibly result in a cache hit. For these, it makes sense to immediately forward the request to the origin server rather than go through a neighbor cache. In most cases, a direct connection to the origin server is faster than a cache miss through a parent. In addition to reducing latency for end users, this technique also reduces the load placed on upper layers of a hierarchy.

Identifying requests that should bypass the hierarchy is relatively straightforward. The most common case is requests that have uncachable responses. An easy way to find uncachable responses is by looking at the request method. Recall from Section 2.2 that only GET method requests are cachable by default. Many of the other methods are never cachable, and POST is cachable only if specifically allowed. Thus, a common heuristic is to send all non-GET requests (with one exception) directly to origin servers.

The exception to this rule is the TRACE method. The purpose of the TRACE method is to enable someone to discover the sequence of caches (or proxies) between the user and an origin server. It is similar to the traceroute program used to show IP routing paths. Even though TRACE responses are not cachable, a proxy cache should ...

Get Web Caching now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.