Content-Negotiation Techniques
There are three distinct methods for deciding which page at a server is the right one for a client: present the choice to the client, decide automatically at the server, or ask an intermediary to select. These three techniques are called client-driven negotiation, server-driven negotiation, and transparent negotiation, respectively (see Table 17-1). In this chapter, we will look at the mechanics of each technique as well as their advantages and disadvantages.
Table 17-1. Summary of content-negotiation techniques
Technique |
How it works |
Advantages |
Drawbacks |
---|---|---|---|
Client-driven |
Client makes a request, server sends list of choices to client, client chooses. |
Easiest to implement at server side. Client can make best choice. |
Adds latency: at least two requests are needed to get the correct content. |
Server-driven |
Server examines client’s request headers and decides what version to serve. |
Quicker than client-driven negotiation. HTTP provides a q-value mechanism to allow servers to make approximate matches and a Vary header for servers to tell downstream devices how to evaluate requests. |
If the decision is not obvious (headers don’t match up), the server must guess. |
Transparent |
An intermediate device (usually a proxy cache) does the request negotiation on the client’s behalf. |
Offloads the negotiation from the web server. Quicker than client-driven negotiation. |
No formal specifications for how to do transparent negotiation. |
Get HTTP: The Definitive Guide 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.